当mysql的C#出现问题时,我的事务不会回滚
本文关键字:事务 我的 mysql 问题 | 更新日期: 2023-09-27 18:00:24
我使用mysql连接器6.2.3.0(.net)从C#连接mysql 5.1。我想一次插入3个表。所以,我使用transaction。假设在将数据插入我的第三个表时遇到一些错误,那么事务没有回滚。数据插入前两个表中。
这是我的密码。。。
MySqlDataAdapter da = new MySqlDataAdapter();
DBUtil cUtil = new DBUtil();
MySqlConnection mysqlCon=null;
MySqlTransaction txn = null;
try
{
mysqlCon = cUtil.getDbConnection();
txn = mysqlCon.BeginTransaction();
//1
sql = "insert into test_details()";
da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn);
da.InsertCommand.ExecuteNonQuery();
//2
sql = "insert into task_details()";
da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn);
da.InsertCommand.ExecuteNonQuery();
sql = "select task_id from task_details where test_id='" + testId + "'";
da.SelectCommand = new MySqlCommand(sql, mysqlCon,txn);
dt1 = new System.Data.DataTable();
da.Fill(dt1);
string task_id = dt1.Rows[0]["task_id"].ToString();
//3
sql = "insert into test_evaluators()";
da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn);
da.InsertCommand.ExecuteNonQuery();
txn.Commit();
mysqlCon.Close();
da.Dispose();
}
catch (Exception e)
{
txn.Rollback();
mysqlCon.Close();
}
我想,一开始,我想禁用自动提交。。。但我不知道该把这个放在哪里。。。
请告诉我这个怎么了。。。
当我们发现这是DB引擎的问题时,您可以使用
ALTER TABLE tablename ENGINE = innodb
参考文档