我试图使用mysql和c#备份数据库,方法如下.
public static void backupDatabase()
{
Process sd = null;
ProcessStartInfo r1 = new ProcessStartInfo("C:\\Program Files\\MySQL\\MySQL Workbench 5.2 CE\\", "--databases=access --compress --routines --triggers --add-drop-database --add-drop-table --add-locks --extended-insert --port=3080 --user=root --disable-keys --quick --comments --complete-insert --result-file=DUMPEDOUTPUT.sql");
r1.CreateNoWindow = true;
r1.WorkingDirectory = "C:\\Program Files\\MySQL\\MySQL Workbench 5.2 CE\\";
r1.UseShellExecute = false;
r1.WindowStyle = ProcessWindowStyle.Minimized;
r1.RedirectStandardInput = false;
sd = Process.Start(r1);
sd.WaitForExit();
if (!sd.HasExited)
{
sd.Close();
}
sd.Dispose();
r1 = null;
sd = null;
}这一行有一个异常,sd = Process.Start(r1);
Exception :{"The directory name is invalid"} Win32Exception Was unhandled有谁能帮我一下吗
非常感谢..。
修改代码:
public static void backupDatabase()
{
Process sd = null;
ProcessStartInfo r1 = new ProcessStartInfo("MySQLWorkbench.exe", "--databases access --compress --routines --triggers --add-drop-database --add-drop-table --add-locks --extended-insert --port=3080 --user=root --disable-keys --quick --comments --complete-insert --result-file=DUMPEDOUTPUT.sql");
r1.CreateNoWindow = true;
r1.WorkingDirectory = @"C:\Program Files\MySQL\MySQL Workbench 5.2 CE\MySQLWorkbench.exe";
r1.UseShellExecute = false;
r1.WindowStyle = ProcessWindowStyle.Minimized;
r1.RedirectStandardInput = false;
sd = Process.Start(r1);
sd.WaitForExit();
if (!sd.HasExited)
{
sd.Close();
}
sd.Dispose();
r1 = null;
sd = null;
}我在同一条线上也有同样的错误。
发布于 2011-10-07 12:09:24
ProcessStartInfo的第一个参数应该是要运行的可执行文件。现在,它指向一个目录。
new ProcessStartInfo("C:\\Program Files\\MySQL\\MySQL Workbench 5.2 CE\\", ...可能应该是
new ProcessStartInfo(
@"C:\Program Files\MySQL\MySQL Workbench 5.2 CE\MySQLWorkbench.exe", ...您还可以在字符串前面使用@来指定路径名,这样就不需要转义反斜杠。如下所示:
new ProcessStartInfo(@"C:\Program Files\MySQL\MySQL Workbench 5.2 CE\", ...更新1
另一件要尝试的事情是,既然您已经指定了工作目录,只需将可执行文件的名称放在ProcessStartInfo中即可。
new ProcessStartInfo("MySQLWorkbench.exe", ...更新2
刚刚注意到您将exe文件名添加到WorkingDirectory中。这应该是目录:
Process sd = null;
ProcessStartInfo r1 = new ProcessStartInfo("MySQLWorkbench.exe", ...);
r1.CreateNoWindow = true;
r1.WorkingDirectory = @"C:\Program Files\MySQL\MySQL Workbench 5.2 CE";但我认为问题可能是权限问题。我猜当前用户没有这个文件路径的权限。
https://stackoverflow.com/questions/7686945
复制相似问题