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

Я открываю соединение с локальным сервером 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 Ответ

9 голосов
/ 01 сентября 2011

Попробуйте добавить 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 будет сбит с толку, думая, что существует существующая транзакция, ведущая к некоторой другой базе данных.

...