これは、「実行」ウィンドウから実行すると、正しく機能します。
cmd.exe /K mysqldump --add-drop-database --add-drop-table --user=root --password=thepassword --databases theDatabase > C:\Backup\theBackup.sql
ただし、外部プロセスを呼び出してWebアプリケーションから実行しようとすると、同じコマンドが失敗します。
コードは次のとおりです。
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", @"/K mysqldump --add-drop-database --add-drop-table --user=root --password=thepassword --databases theDatabase > C:\Backup\theBackup" + ".sql");
Process p = Process.Start(processInfo);
これは私が得るものです...
代替テキストhttp://img40.imageshack.us/img40/8121/mysqldumperror.gif
興味深いことに、ファイル(theBackup.sql)は作成されますが、空です。
これは環境のPATH変数の問題ではありません。mysqldumpを含むMySqlbinディレクトリパスが環境PATH変数に追加されます。これを確認するには、コマンドプロンプトを開き、上のスクリーンショットに記載されているパスに移動し、mysqldumpコマンドを手動で入力すると、コマンドが認識されます...以下に示すように...
代替テキストhttp://img40.imageshack.us/img40/6879/mysqldumppathproper.gif
次のコードが機能するため、問題はmysqldump固有です。
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", "/K ping stackoverflow.com");
ここで何が問題になっていますか?