2017-03-09 13 views
-1

私は、DelphiとMySQLを使用してMySQLDumpで生成されたスクリプトを復元するツールを構築しています。 SQLファイルをロードして実行し、考えられるエラーを特定の出力ファイルに記録することになっていました。Delphi + MySQLコマンドライン

私はmysqlコマンドラインを実行してコマンドラインを送信することを考えましたが、Windowsのcmdを使用してmysqlを呼び出し、ShellExecuteを使用して単一のコマンドラインを実行する方法を知っているので、 CreateProcessを 私はこれを試してみました私は、単一のコマンドラインでそれを実行しようとしましたが、それは正しく

をエラーをログに記録did'nt:>:「\ restore.sql C」 CMD/C mysql.exe --userルート< "C:\ restore_log.txt"

restore.sqlの内容は以下のとおりであった: ドロップデータベース試験;

それは私のスクリプトを実行し、それはログインする必要があり二回目の「データベースが存在しない」しかし、誰もがMySQLを呼び出し、複数を送信する方法を指すことができればそれが役立つだろう

空restore_log.txtました行または適切にログに私のcmd行のヘルプ 誰も私を助けることができますか?

+0

あなたは 'それを返しCMDに--log-エラー= file_name' –

+0

を試してみました:不明「--log-エラー」オプションIは、接続コンポーネントを使用するために避けた – luix10

答えて

0

MySQLデータベースへの接続に使用できるコンポーネントがわかりませんが、TADOQueryを使用してSQL Serverにアクセスすると、TADOQueryの.SQLプロパティにクエリをロードし、OpenまたはExecSQLを呼び出します。 SQLDumpによって生成されたばかりのバニラSQLであれば、動作するはずです。とにかく試してみる価値がある。私が助けた前回の答えを見つけたのstackoverflowで詳細を掘る

+0

..私はただのmysqldumpとMySQLのコマンドラインを呼び出してそれを実行しようとしていたが、私はこれがあることを行っていると思います今のところ解決策 – luix10

+0

なぜコマンドラインツールの使用を強くお勧めしますか?子プロセスとして起動される別個のEXEを制御することはできません。どちらかが成功するか失敗するか。それはあなたのDBに重複データをダンプすることさえできます。 –

+0

これは役に立ちますか? http://stackoverflow.com/questions/15031225/trying-to-call-shellexecute-to-run-mysql-and-a-sql-script –