加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#,MySQL,ADO.NET,分隔符导致语法错误

发布时间:2020-12-15 08:12:24 所属栏目:百科 来源:网络整理
导读:我有C#代码循环.sql文件并执行其中的内容来设置数据库. 一个.sql文件基本如下: DROP PROCEDURE IF EXISTS myProc;DELIMITER $$CREATE PROCEDURE myProc()BEGIN-- procedure stuff goes hereEND $$DELIMITER ;CALL myProc(); 当我将它输入到MySQL查询浏览器
我有C#代码循环.sql文件并执行其中的内容来设置数据库.

一个.sql文件基本如下:

DROP PROCEDURE IF EXISTS myProc;

DELIMITER $$

CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$

DELIMITER ;

CALL myProc();

当我将它输入到MySQL查询浏览器的脚本窗口时,它会一遍又一遍地运行,就像人们希望的那样.

但是,如果我将字符串放入我的IDbCommand并执行它…

connection.Open(); // An IDbConnection
IDbTransaction transaction = connection.BeginTransaction();
using (IDbCommand cmd = connection.CreateCommand())
{
    cmd.Connection = connection;
    cmd.Transaction = transaction;
    cmd.CommandText = line;
    cmd.CommandType = CommandType.Text;

    try
    {
        cmd.ExecuteNonQuery();
    }
    catch (SqlException ex)
    {
        transaction.Rollback();
        return false;
    }
}

transaction.Commit();
connection.Close();

……我得到了可怕的例外1064 ……

You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near ‘DELIMITER $$CREATE PROCEDURE myProc() BEGIN…

所以,问题是……为什么MySQL让我这样做没有问题,但是当我尝试从C#运行它时,它失败了?当然第二个问题是我应该如何修复它.

解决方法

我想你要找的是: “Bug #46429: use DELIMITER command in MySql.Data.MySqlClient.MySqlScript”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读