Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Транзакции в mysql


Автор: sergush 2.1.2006, 02:27
Объясните пожалуйста почему не работает этот код:
Код

        Connection c = null;
        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            c = DriverManager.getConnection("jdbc:odbc:TestRollback", "", "");
            c.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
            Statement stmt = c.createStatement();
            c.setAutoCommit(false);
            stmt.executeUpdate("INSERT INTO tb(D) VALUES ('as');");
            c.rollback();
            ...

На rollback вылетает исключение. Запись в таблицу добавляется, но не удаляется. Может все дело в 5-й строке. Не представляю зачем она и обязательна ли.
Используется mysql 4.0.12.

Автор: Illuminaty 2.1.2006, 02:35
А тип таблиц какой?
Цитата
При выполнении команды ROLLBACK после обновления таблицы, не поддерживающей транзакции, пользователь получит ошибку (ER_WARNING_NOT_COMPLETE_ROLLBACK) в виде предупреждения. Все таблицы, поддерживающие транзакции, будут перезаписаны, но ни одна таблица, не поддерживающая транзакции, не будет изменена.

http://dev.mysql.com/doc/refman/4.0/ru/commit.html

Автор: sergush 2.1.2006, 02:50
Спасибо Illuminaty. Действительно изменил тип таблицы на Inno DB и все заработало.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)