Транзакции в MySQL - невозможно откатить - PullRequest
6 голосов
/ 17 марта 2011

Я использую 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 v. 6.3.6.0

MySQL v. 5.0.27

C # VS2010

1 Ответ

3 голосов
/ 17 марта 2011

У меня была открыта вторая база данных с неверными данными, показывающими> <... этот метод работает.Оказывается, мне даже не нужно: </p>

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

Так что этот код работает для транзакций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...