Я работаю над приложением C#, в котором мне нужно сделать копию уже существующей схемы базы данных в MySQL. Я использую mysqldump.exe
для выполнения задачи. В рамках процесса я выполняю mysqldump.exe
и передаю необходимые аргументы процессу. Ниже мой код процесса.MySQL дублирующая схема с использованием mysqldump.exe в процессе C#
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);
Когда я исполняю mysqldump.exe из DOS с теми же аргументами, что работает хорошо, и сделать копию masterDB схемы в childDB. Но изнутри этого кода C# это не работает.
Существует некоторая проблема с строкой аргумента, которую я передаю процессу. В консольном приложении это показывает мне ошибку «не удалось найти таблицу». Я попытался составить строку по-разному, но для меня ничего не работало.
umer см. Http://stackoverflow.com/q/850802 – Drew