连接必须是有效的,并且可以将事务回滚到c#和MySql数据库

本文关键字:事务 数据库 MySql 有效 连接 | 更新日期: 2023-09-27 18:16:38

我使用c# Framework2.0开发程序,数据库是mysql。我使用事务处理,但总是出错

系统。InvalidOperationException:连接必须是有效的,并且打开回滚事务在MySql.Data.MySqlClient.MySqlTransaction.Rollback ()

下面是一些源代码:

 try
        {
            using (MySqlConnection connection = new MySqlConnection(ConnectionString))
            {
                connection.Open();
                MySqlCommand command = connection.CreateCommand();
                MySqlTransaction myTrans = connection.BeginTransaction();
                command.Connection = connection;
                command.Transaction = myTrans;
                try
                {
                   string sql ="XXXXX";
                   command.CommandText =sql;
                   command.ExecuteNonQuery();
                   sql="yyyy";
                   command.CommandText =sql;
                   command.ExecuteNonQuery();
                   .........
                  myTrans.Commit();
                }
                catch (Exception ex)
                {
                    myTrans.Rollback();
                    throw ex;
                }
            }
        }
        catch (Exception ex)
        {
            FileHelper.WriteLog(ex);
        }

我检查样本来自:

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqltransaction.html

源代码应该没问题。

错误提示连接似乎已经关闭。我认为使用Using()应该是可以的。它会自动关闭

有人能帮我吗?

连接必须是有效的,并且可以将事务回滚到c#和MySql数据库

我终于找到解决办法了。

MySqlCommand。CommandTimeout默认为30秒。

可能服务器老旧,数据量大。所以超时

so show error

连接必须有效并打开回滚事务

Just Set MySqlCommand.CommandTimeout=1200

这个可以很好地工作。

很难找到根本原因。