Why does opening a connection throw a distributed transactions error in MySQL? (.NET Connector)
I'm opening a connection to a local MySQL server and on the connection.Open()
method it throws this error:
System.NotSupportedException: MySQL Connector/Net does not currently support distributed transactions.
at MySql.Data.MySqlClient.MySqlConnection.EnlistTransaction(Transaction> transaction) at MySql.Data.MySqlClient.MySqlConnection.Open()
All I'm doing is this:
var connection = new MySql.Data.MySqlClient.MySqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
connection.Open();
The connection string in the app.config is
<开发者_开发技巧add name="Connection" connectionString="server=localhost;user id=userid;Password=password;database=dbname" providerName="MySql.Data.MySqlClient" />
I don't know why it's trying to enlist the transaction, I haven't specified any transactions & I only have one MySQL server I'm connecting to
Try adding Enlist=false
to your connection string:
EDIT: from the MySQL Connector/.NET documentation, if you set AutoEnlist=false
in the connection string it should work.
<add name="Connection" connectionString="server=localhost;user id=userid;Password=password;database=dbname;AutoEnlist=false" providerName="MySql.Data.MySqlClient" />
It appears that certain versions of ADO.NET can default to automatically enlisting a connection into an existing transaction. See http://msdn.microsoft.com/en-us/library/ms254973.aspx for more detail, but I expect somehow somewhere ADO is confused into thinking that there's an existing transaction going on to some other db.
精彩评论