Почему открытие соединения приводит к ошибке распределенных транзакций в MySQL? (.NET Connector)

Я открываю соединение с локальным сервером MySQL и на connection.Open() метод выдает эту ошибку:

System.NotSupportedException: MySQL, Connector/Net, в настоящее время не поддерживает распределенные транзакции.
в MySql.Data.MySqlClient.MySqlConnection.EnlistTransaction(Транзакция> транзакция) в MySql.Data.MySqlClient.MySqlConnection.Open()

Все, что я делаю, это:

var connection = new MySql.Data.MySqlClient.MySqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
connection.Open();

Строка подключения в app.config

<add name="Connection" connectionString="server=localhost;user id=userid;Password=password;database=dbname" providerName="MySql.Data.MySqlClient" />    

Я не знаю, почему он пытается подключить транзакцию, я не указал никаких транзакций, и у меня есть только один сервер MySQL, к которому я подключаюсь

1 ответ

Решение

Попробуйте добавить Enlist=false к вашей строке подключения:

РЕДАКТИРОВАТЬ: из документации MySQL Connector/.NET, если вы установите AutoEnlist=false в строке подключения это должно работать.

<add name="Connection" connectionString="server=localhost;user id=userid;Password=password;database=dbname;AutoEnlist=false" providerName="MySql.Data.MySqlClient" />    

Похоже, что определенные версии ADO.NET могут по умолчанию автоматически подключать соединение к существующей транзакции. См. http://msdn.microsoft.com/en-us/library/ms254973.aspx для получения более подробной информации, но я ожидаю, что где-то ADO запутается, думая, что существует какая-то транзакция, идущая к некоторой другой базе данных.

Другие вопросы по тегам