您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行“source D://sqldatabase.sql”附近使用的正确语法。
MySqlCommand comm = conn.CreateCommand();
comm.CommandText = "source D://sqldatabase.sql";
try {
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
} catch (MySqlException a) {
MessageBox.Show(a.Message);
}
最佳答案
“source”是mysql命令行工具的命令,根本不被服务器识别。
因此,当使用 mysql.exe(命令行客户端)时,它知道如何处理它,而 mysql-server 则不知道。
C# 也不知道。您必须将该文件读入您的程序中,并手动一一执行其中的命令。
评论中所说的另一种方法是从程序中运行 mysql.exe:
using System.Diagnostics;
Process mysql = new Process( );
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "Path\\To\\mysql.exe";
psi.Arguments = " -u[username] -p[password] [database] < D:\\sqldatabase.sql";
psi.UseShellExecute = false;
P.StartInfo = psi;
P.Start();
请注意:
在命令行上使用密码可能不安全
-p 和密码之间没有空格(重要!)
关于c# - 即使我在 SQL 控制台中测试命令文本时命令文本是正确的,我的命令文本仍然有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42476653/