4

我正在打开与本地 MySQL 服务器的连接,并在connection.Open()它引发此错误的方法上:

System.NotSupportedException:MySQL 连接器/网络当前不支持分布式事务。
在 MySql.Data.MySqlClient.MySqlConnection.EnlistTransaction(Transaction> 事务) 在 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 服务器要连接

4

1 回答 1

10

尝试添加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 在某个地方感到困惑,认为有一个现有事务正在进行到其他数据库。

于 2011-09-01T03:27:58.787 回答