我有一个代码可以从查询中创建备份副本,该查询从过去一年中获取较旧的寄存器,并将其保存到* .sql文件中。但是我发现的问题是当我打开.sql文件时,它是空的。我已经在命令提示符下尝试查询,它可以完美运行。

我是使用mysql的新手,并且已阅读以下文章以创建我的代码(并寻找答案):
Backing up Database in MySQL using C#

C# and mysqldump

How to take backup of MySQL Database

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秒),它会打开命令提示符窗口并立即关闭。

最佳答案

解决方案很简单,方法如下:
psInfo.Arguments =“-u root -h localhost-数据库--hex-blob -n -t仪表板-表dashboard.backup --where ='updated_at 只有我必须删除“-”和“ u”之间的空格。

关于c# - 在C#中进行mysqldump备份不会检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56271945/

10-16 02:30