Создание резервной копии mysqldump в C# не извлекает данные
У меня есть код для создания резервной копии из запроса, этот запрос берет старые регистры из прошлого года и сохраняет их в файл *.sql. Но проблема, которую я обнаружил, заключается в том, что когда я открываю файл .sql, он пуст. Я попробовал запрос в командной строке, и он отлично работает.
try { string strBackupFileName = GetBackUpFileName(); StreamWriter strBackupFile = new StreamWriter(strBackupFileName); ProcessStartInfo psInfo = new ProcessStartInfo(); psInfo.FileName = @"c:\Users\current.user\source\xampp\mysql\bin\mysqldump.exe"; psInfo.RedirectStandardInput = false; psInfo.RedirectStandardOutput = false; psInfo.Arguments = "- u root -h localhost --databases --hex-blob -n -t dashboard --tables dashboard.backup --where='updated_at < NOW() - INTERVAL 365 DAY'"; psInfo.UseShellExecute = false; psInfo.RedirectStandardOutput = true; Process backup_process = Process.Start(psInfo); string stdout; stdout = backup_process.StandardOutput.ReadToEnd(); strBackupFile.WriteLine(stdout); backup_process.WaitForExit(); strBackupFile.Close(); backup_process.Close(); MessageBox.Show("Backup done at file:" + strBackupFileName); } catch (Exception ex) { MessageBox.Show("Error during the backup: \n\n" + ex.Message); }
Что я уже пробовал:
Когда я запускаю программу, я вижу, что mysqldump не "ждет", чтобы сделать этот процесс (когда я делаю это вручную, это занимает не менее 25-30 секунд), он открывает окно командной строки и сразу же закрывается