Member 14471936 Ответов: 1

Создание резервной копии 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 секунд), он открывает окно командной строки и сразу же закрывается

1 Ответов

Рейтинг:
8

Richard MacCutchan

psInfo.Arguments = "- u root -h localhost --databases --hex-blob -n -t dashboard --tables dashboard.backup --where='updated_at < NOW() - INTERVAL 365 DAY'";

Может быть, это пространство между - характер и то, что u это вызывает проблемы.


Member 14471936

ОМГ, это была проблема!, большое вам спасибо!!!

[no name]

Спасибо!