Синтаксическая ошибка при открытии транзакции с Connector / NET на MariaDB 10 - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь подключить свое веб-приложение к серверу MariaDB 10.Я уже делаю это без проблем на версии 5, используя MySQL Connector / NET.В версии 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

Я задал вопрос как проблему с Connector / NET, но я получаю ту же ошибку при выполнении «BEGIN» с HeidiSQLтак что, возможно, это общая проблема.

Кажется, это связано с разделителями, но звучит странно, потому что это нечто внутреннее для коннектора, и HeidiSQL и мое программное обеспечение, просто изменяя строку соединения, корректно работают на MariaDB 5.

Возможно, из-за какой-то конфигурации сервера?

1 Ответ

0 голосов
/ 03 января 2019

У нас было много проблем с оригинальным Connector / NET, есть хорошо известные ошибки , которые вы не можете обойти, и команда за оригинальным разъемом (если он вообще есть) не похоже, что все равно .

Мы закончили тем, что переключились на открытый источник MySqlConnector , который является удивительным.

Он реализует протокол с нуля, исправляя огромный список известных ошибок в официальном коннекторе (см. Внизу здесь ).

В нем также представлены некоторые дополнительные функции, такие как истинная асинхронная функциональность и т. Д.

Раскрытие информации: я и моя команда никоим образом не связаны с упомянутым проектом, нам просто пришлось переключиться из-за ошибок в официальном проекте, и с тех пор мы счастливые пользователи.

...