Почему не работает откат транзакции на SqlException? - PullRequest
3 голосов
/ 19 июля 2011

Использование следующего

import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/eventDb", "user",
        "pwd", "com.mysql.jdbc.Driver")

def sqlInsert = "INSERT INTO GTEST (EVENTID,TSTAMP,USER_ID,USER_FIRST_NAME) VALUES (?,?,?,?)"
def sqlParams = ['EVENTID':0, 'TSTAMP':'','USER_ID':'janew','USER_FIRST_NAME':'janewithaverylongnamesothatitdoesntfitwell']
sqlParams['TSTAMP'] = new Date()

sql.withTransaction {stmt ->
    def eventId = sql.executeInsert("INSERT INTO EVENTS (LOGID,TSTAMP) VALUES (2,CURRENT_TIMESTAMP)")
    sqlParams['EVENTID'] = eventId [0][0]
    sql.executeInsert(sqlInsert, sqlParams.values().toList())
}

Второе выполнение не будет выполнено, однако первая вставка не будет откатываться.Что я здесь не так делаю?

Ответы [ 2 ]

6 голосов
/ 19 июля 2011

Вы не показываете определение таблиц; может быть, это MyISAM и поэтому не поддерживают транзакции?

0 голосов
/ 31 мая 2013

Пожалуйста, посмотрите мой ответ на этот вопрос здесь:

https://stackoverflow.com/a/16863373/1216686

Не совсем соответствует вашему примеру, но там может быть что-то для вас или кого-то еще.Я знаю, что это старый пост, но, похоже, это распространенная проблема среди пользователей объектов Groovy Sql.

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