【发布时间】:2019-03-31 10:40:00
【问题描述】:
所以我正在尝试从C# 应用程序执行以下SQL 代码
SOURCE Install/Create_Initial_Index
SOURCE Install/Create_Table_Pk
使用以下C# 代码
public static void installScripts(MySqlConnection conn, String installScriptPath)
{
MySqlScript script = new MySqlScript(conn, File.ReadAllText(installScriptPath));
script.Execute();
}
但是它会引发 SOURCE 关键字的语法错误
错误代码:1064。您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 'SOURCE Install/Create_Initial_Index.sql 附近使用的语法# 20170109 不需要 ==>>> 第 1 行的 SOURCE Inst'
当从MySQL 工作台调用.sql 脚本时,SOURCE 关键字似乎不起作用,但从mysql> 命令行调用它时却起作用。但是,我使用的C# 代码似乎等同于从MySQL 工作台调用它。有谁知道我可以如何更改我的 C# 代码,以便将调用等同于 mysql> 命令行调用。我认为这可以解决问题。
编辑 1:我尝试通过从 C# 运行 shell 脚本来执行此操作,但它不起作用,因为连接需要密码
编辑 2:这个问题与有人认定为“重复”的问题完全不同。请完整阅读问题。
【问题讨论】:
-
不,不是……
-
您不能在通过 MySqlScript 对象运行的脚本中使用 SOURCE 命令。它只运行 sql 命令,但 source 命令是 mysql 客户端命令。它在发送到 mysql 服务器之前由 mysql 客户端解释。 dev.mysql.com/doc/refman/8.0/en/mysql-commands.html
-
@mewkie 你误解了我的意思。您正在尝试在 c# 中执行“SOURCE somesql.sql”,就好像它是服务器支持的 SQL 语句一样,它不是。 SOURCE 是 mysql 命令行客户端理解为“加载此脚本并执行内容”的命令。因此,您实际尝试/想要做的是“将
的内容加载到 c# 中并执行它”-> 我链接了另一个问题,因为它解决了您实际尝试解决的问题(有- a-sql-script-in-a-file-and-execute-it-in-c#),而不是您的解决方案的问题。 (这个名字是“XY问题”)