我正在尝试将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上正常工作。
我可能是由于某些服务器配置吗?
答案 0 :(得分:0)
原始连接器/ NET遇到很多问题,有一些众所周知的错误,您无法真正解决,原始连接器后面的团队(如果有的话)< strong>似乎不在乎。
它从头实现了协议,修复了官方连接器中的大量已知错误(请参阅底部的here)。
它还广告了一些额外的功能,例如真正的异步功能等。
披露:我和我的团队与上述项目没有任何关系,由于官方项目中的错误,我们仅需进行切换,从那时起我们一直很高兴为用户服务。 < / p>