当从“运行”窗口运行时,它可以正常工作。
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 的 MySql bin 目录路径添加到环境 PATH 变量中。要检查这一点,如果我打开命令提示符,导航到上面屏幕截图中提到的路径并手动键入 mysqldump 命令,它会识别命令...如下所示...
替代文字 http://img40.imageshack.us/img40/6879/mysqldumppathproper.gif
问题是 mysqldump 特定的,因为以下代码有效
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", "/K ping stackoverflow.com");
这里有什么问题?