在MariaDB 10上使用Connector / NET打开事务时出现语法错误

时间:2019-01-03 10:21:35

标签: .net mariadb mysql-connector

我正在尝试将Web应用程序连接到MariaDB 10服务器。我已经在使用MySQL Connector / NET的版本5上做到了没有问题。 对于版本10,当软件执行BeginTransaction时,在执行查询之前会收到错误消息。

IDbConnection dbConnection=new MySqlConnection(connectionString);
dbConnection.BeginTransaction();

该错误是经典现象:

[MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1]
MySql.Data.MySqlClient.MySqlStream.ReadPacket() +384
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) +379
MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) +119
MySql.Data.MySqlClient.MySqlDataReader.NextResult() +901
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +2308
MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() +133
MySql.Data.MySqlClient.MySqlConnection.BeginTransaction(IsolationLevel iso) +761
MySql.Data.MySqlClient.MySqlConnection.BeginDbTransaction(IsolationLevel isolationLevel) +19

我检查了连接器源代码,它似乎在执行时发生

cmd.CommandText = "BEGIN";
cmd.ExecuteNonQuery();

在此文件https://github.com/mysql/mysql-connector-net/blob/6.9/Source/MySql.Data/Connection.cs

我将这个问题作为连接器/ NET的一个问题提出,但是我在用HeidiSQL执行“ BEGIN”时收到相同的错误,所以也许这是一个普遍问题。

它似乎已连接到定界符,但听起来很奇怪,因为它是连接器内部的东西,HeidiSQL和我的软件(只需更改连接字符串)都可以在MariaDB 5上正常工作。

我可能是由于某些服务器配置吗?

1 个答案:

答案 0 :(得分:0)

原始连接器/ NET遇到很多问题,有一些众所周知的错误,您无法真正解决,原始连接器后面的团队(如果有的话)< strong>似乎不在乎。

我们最终切换到了很棒的开源MySqlConnector

它从头实现了协议,修复了官方连接器中的大量已知错误(请参阅底部的here)。

它还广告了一些额外的功能,例如真正的异步功能等。

披露:我和我的团队与上述项目没有任何关系,由于官方项目中的错误,我们仅需进行切换,从那时起我们一直很高兴为用户服务。 < / p>