gpt4 book ai didi

c# - 在 C# 进程中使用 mysqldump.exe 的 MySQL 重复模式

转载 作者:行者123 更新时间:2023-11-29 20:55:15 24 4
gpt4 key购买 nike

我正在开发一个 C# 应用程序,在该应用程序中我必须复制 MySQL 中现有的数据库架构。我正在使用 mysqldump.exe 来完成任务。在一个进程中,我执行 mysqldump.exe 并将所需的参数传递给该进程。下面是我的处理代码。

ProcessStartInfo proc = new ProcessStartInfo();
proc.Arguments = @"-h localhost --port 33060 -u root -p1234 MasterDB | mysql -h localhost --port 33060 -u root -p1234 ChildDB";
proc.FileName = @"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe";
proc.UseShellExecute = false;
proc.RedirectStandardOutput = true;
Process p = Process.Start(proc);
using (StreamReader reader = p.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
p.WaitForExit(60000);

当我使用相同的参数从 DOS 执行 mysqldump.exe 时,它​​运行良好并将 masterDB 模式复制到 childDB 中。但在这段 C# 代码中它不起作用。

我传递给进程的参数字符串存在一些问题。在控制台应用程序中,它向我显示错误“找不到表”。我尝试过以不同的方式组成字符串,但没有任何效果。

最佳答案

在从互联网上的任何地方找不到任何答案后,我自己工作并找到了问题的解决方案。下面是我的代码,它将我的数据库架构 A 复制到数据库 b 中。

ProcessStartInfo proc = new ProcessStartInfo("cmd.exe");
proc.WorkingDirectory = "C:";
proc.RedirectStandardInput = true;
proc.RedirectStandardOutput = true;
proc.WindowStyle = ProcessWindowStyle.Hidden;
proc.UseShellExecute = false;
proc.CreateNoWindow = true;
Process p = Process.Start(proc);
p.StandardInput.WriteLine(@"cd ""C:\Program Files\MySQL\MySQL Server 5.6\bin""");
p.StandardInput.WriteLine(@"mysqldump -h localhost --port 33060 -u root -p1234 vrecord_client | mysql -h localhost --port 33060 -u root -p1234 "+ DBName +"");
p.WaitForExit();

关于c# - 在 C# 进程中使用 mysqldump.exe 的 MySQL 重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37695057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com