C# MySQL 事务不工作
C# MySQL transactions not working
我想了解交易的运作方式,但我想我遗漏了什么。
我想开始在循环中添加一些行,然后 i == 5
我想回滚事务。
主要问题是它不回滚。
MySqlConnection conn2 = new MySqlConnection("server=127.0.0.1;uid=root;pwd=;database=dbtest;");
conn2.Open();
MySqlCommand command2 = conn2.CreateCommand();
MySqlTransaction trans;
trans = conn2.BeginTransaction();
command2.Transaction = trans;
try
{
for (int i = 0; i < 10; i++)
{
command2.CommandText = "INSERT INTO test (col1, col2, col3) VALUES ('1','1','1')";
command2.ExecuteNonQuery();
if (i == 5)
{
throw new Exception();
}
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
trans.Rollback();
}
我尝试在不同的地方添加 SET autocommit = 0
和 trans.Commit()
,但仍然没有用。
然后我决定尝试 MySQL 数据库:
START TRANSACTION;
INSERT INTO test (col1, col2, col3) VALUES ('1','1','1')
//also with COMMIT here
ROLLBACK;
也不行。我尝试阅读各种教程,查看官方 MySQL 交易页面,但仍然没有任何进展。
可能您正在使用不支持事务的 de MyISAM 引擎。
如果是这种情况,您可以尝试将其更改为 InnoDB。
我想了解交易的运作方式,但我想我遗漏了什么。
我想开始在循环中添加一些行,然后 i == 5
我想回滚事务。
主要问题是它不回滚。
MySqlConnection conn2 = new MySqlConnection("server=127.0.0.1;uid=root;pwd=;database=dbtest;");
conn2.Open();
MySqlCommand command2 = conn2.CreateCommand();
MySqlTransaction trans;
trans = conn2.BeginTransaction();
command2.Transaction = trans;
try
{
for (int i = 0; i < 10; i++)
{
command2.CommandText = "INSERT INTO test (col1, col2, col3) VALUES ('1','1','1')";
command2.ExecuteNonQuery();
if (i == 5)
{
throw new Exception();
}
}
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
trans.Rollback();
}
我尝试在不同的地方添加 SET autocommit = 0
和 trans.Commit()
,但仍然没有用。
然后我决定尝试 MySQL 数据库:
START TRANSACTION;
INSERT INTO test (col1, col2, col3) VALUES ('1','1','1')
//also with COMMIT here
ROLLBACK;
也不行。我尝试阅读各种教程,查看官方 MySQL 交易页面,但仍然没有任何进展。
可能您正在使用不支持事务的 de MyISAM 引擎。 如果是这种情况,您可以尝试将其更改为 InnoDB。