[英]Cannot restore mysql dump file with mysql.exe in C#
我已经成功创建了 mysql 数据库转储文件(utf8):
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Application.StartupPath + "\\mysqldump.exe";
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = true;
psi.Arguments = "-r D:\\backup.sql --user=root --password=1234 --opt databasename";
psi.UseShellExecute = false;
Process process = Process.Start(psi);
process.WaitForExit();
process.Close();
我可以使用 windows CMD 和这个单行命令成功地将 utf8 转储文件恢复到数据库中:
mysql.exe -u root --password=1234 databasename < d:\backup.sql
但是,我未能执行 C# 中的命令。 你能告诉我哪里出了问题。 非常感谢你。 以下是我的命令:
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = Application.StartupPath + "\\mysql.exe";
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = false;
psi.Arguments = "--user=root --password=1234 databasename < D:\\backup.sql";
psi.UseShellExecute = true;
Process process = Process.Start(psi);
process.WaitForExit();
process.Close();
您确定您的 C# exe 在安装 MySQL 的同一目录中执行吗? 如果您从 c 的命令行运行:文件名将是 C:\mysqldump.exe。 我怀疑它躺在那里。 如果 mysqldump.exe 在路径中,您可能不需要 append Application.StartupPath 或任何其他路径...
您可能希望在还原中省略数据库名称。 因为您使用数据库名称创建了转储文件,所以它不需要并且可能不喜欢您提供的数据库名称。 我知道它是在命令行运行的,所以可能不是这样,但我看到的语法是 psi.Arguments = "--user=root --password=1234 < D:\backup.sql";
如果数据库已经存在,如果你想恢复它,你可能需要使用 mysqlimport -u [uname] -p[pass] [dbname] [backupfile.sql]
我还注意到您使用了 psi.RedirectStandardOutput = false; 在备份中它是真实的还原。 你没有使用 output 所以它们应该都是假的。
如果这一切都失败了,如果您可以包含您在恢复时遇到的错误,这可能会有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.