6
我正在使用MySQL 5.0.27,并试图让事务工作。我跟着这个教程:在MySQL中的事务 - 无法回滚
http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqltransaction.html
,但仍无法得到这些工作。我试图更新的表是InnoDB,并试图执行'set autocommit = 0',但它似乎没有做任何事情....我写的代码如下:
public int transactionUpdate()
{
MySqlConnection connection = new MySqlConnection(connStr);
connection.Open();
MySqlCommand command = connection.CreateCommand();
MySqlTransaction trans;
trans = connection.BeginTransaction();
command.Connection = connection;
command.Transaction = trans;
try
{
command.CommandText = "SET autocommit = 0";
command.executeNonQuery();
command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = 'en-us' WHERE rl.recording=123456";
command.executeNonQuery();
command.CommandText = "UPDATE TBL.rec_lang rl SET rl.lang_code = en-us WHERE rl.recording=123456";
command.executeNonQuery();
trans.Commit();
}
catch(Exception ex)
{
try
{
trans.Rollback();
}
catch(MySqlException mse)
{
log.error(mse);
}
}
}
第二个命令失败,因为它缺少'around'en-us'。这应该回滚第一个查询以及以前的值,但它不是。你能告诉我我在做什么错吗?
MySQLConnector诉6.3.6.0
MySQL的诉5.0.27
C#VS2010
你正在吞食例外'ex'。不好!不要这样做! – 2011-03-16 22:01:54
您正在使用什么存储引擎?直接使用管理员或控制台进行交易工作? – 2011-03-16 22:08:26
存储引擎是InnoDB据我所知(在SQLYog - >选择表中,右击高级属性,引擎= InnoDB版本10) – Austin 2011-03-16 22:11:33