c# - MySQL 中的事务 - 无法回滚

标签 c# mysql transactions rollback

我正在使用 MySQL 5.0.27 并试图让事务正常工作。我遵循了本教程:

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);
        }
    }
}

第二个命令失败,因为它缺少 'en-us' 周围的 '。这应该将第一个查询也回滚到以前的值,但事实并非如此。你能告诉我我做错了什么吗???

MySQLConnector 6.3.6.0 版

MySQL 5.0.27 版

C# VS2010

最佳答案

我打开了第二个数据库,其中有错误的数据显示 ><... 这个方法有效。结果我什至不需要:

command.CommandText = "SET autocommit = 0";  
command.executeNonQuery();

因此这段代码确实适用于交易。

关于c# - MySQL 中的事务 - 无法回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5332374/

相关文章:

c# - DataView RowFilter 类似运算符

c# - 已部署代码超时,但在调试期间不会超时

php - codeigniter 中的动态菜单和角色权限

java - Hibernate 无法解析属性

MYSQL 搜索字符串是否包含特殊字符?

Azure:如何计算存储事务

c# - 由于 MVC3 应用程序中面向对象的方法,防止重复的数据库调用

C# 列出 amazon S3 文件夹下所有具有文件名的文件

java - 如何强制*立即*将新记录保存到数据库中?

c# - 事务 Rollback() 是否有机会抛出异常?