2016-02-05 89 views
-1

我想在Vb.net中备份MySQL数据库。我记得密码都不得用CMD命令进入使用mysqldump的Mysql备份输出空文件

Dim myProcess As New Process() 
myProcess.StartInfo.FileName = "cmd.exe" 
myProcess.StartInfo.UseShellExecute = False 
myProcess.StartInfo.WorkingDirectory = "c:\bu\" 
myProcess.StartInfo.RedirectStandardInput = True 
myProcess.StartInfo.RedirectStandardOutput = True 

myProcess.Start() 
Dim myStreamWriter As StreamWriter = myProcess.StandardInput 
Dim mystreamreader As StreamReader = myProcess.StandardOutput 
myStreamWriter.WriteLine("mysqldump --user=root --password=MYPASSWORD --host=localhost MYDATABASE > ""C:\bu\1.sql""") 
myStreamWriter.Close() 
myProcess.WaitForExit() 
myProcess.Close() 

这就是创建一个文件,但该文件是总是空...

+0

恕我直言,你正在接近这个错误;你想设置MySQL数据库复制。 – cybermonkey

+0

NuGet上有一个MySQL备份工具 – user3697824

回答

1

以我的经验:我使用这个代码。试试这个代码来获取输出错误信息:

Dim myProcess As New Process() 
    myProcess.StartInfo.FileName = "cmd.exe" 
    myProcess.StartInfo.WorkingDirectory = mysql_path + "\bin" 
    myProcess.StartInfo.UseShellExecute = False 
    myProcess.StartInfo.RedirectStandardInput = True 
    myProcess.StartInfo.RedirectStandardOutput = True 
    myProcess.StartInfo.RedirectStandardError = True 

    myProcess.Start() 
    Dim myStreamWriter As StreamWriter = myProcess.StandardInput 
    Dim mystreamreader As StreamReader = myProcess.StandardOutput 
    Dim mystreamerror As StreamReader = myProcess.StandardError 
    myStreamWriter.WriteLine(String.Format("mysqldump --user=root --password=MYPASSWORD --host=localhost MYDATABASE > ""C:\bu\1.sql""") 
    myStreamWriter.WriteLine(String.Format("exit")) 
    myStreamWriter.Close() 
    Dim msg As String = mystreamerror.ReadToEnd() 
    mystreamerror.Close() 
    If msg.Length > 0 Then 
     MsgBox(msg) 
    End If 
    myProcess.WaitForExit() 
    myProcess.Close() 

如果问题是由设置密码,您可以检查this article用于设置选项文件的密码。

相关问题