Groovy Sql withBatch висит в MySQL бесконечно - PullRequest
0 голосов
/ 02 октября 2018

У меня проблема с обработкой пакетных операторов Groovy Sql.Когда выполняется пакетный оператор, код зависает бесконечно без ошибок.

Ниже приведен пример кода, который я запускаю:

String query = '''
    INSERT INTO my_table
        (field1, field2, field3, field4, field5, field6, field7, field8)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?)
'''

Sql sql = Sql.newInstance("jdbc:mariadb://${config.serverName}:${config.port}/${config.databaseName}", config.username, config.password))

List<MyRow> rows = [ ... ] // A collection of 21 objects

sql.withTransaction {
    sql.withBatch(query) { BatchingPreparedStatementWrapper statement ->
        rows.each {
            statement.addBatch(it.field1, it.field2, it.field3, it.field4, it.field5, it.field6, it.field7, it.field8)
        }
    }
}

Единственный способ, которым я получилПриведенный выше код для работы должен указать размер пакета 1.

Мой проект имеет следующие зависимости:

  • org.codehaus.groovy: groovy-all: 2.4.12
  • org.mariadb.jdbc: mariadb-java-client: 2.2.3
  • Amazon Aurora MySQL

Есть идеи?

Обновление:

Я недавно обнаружил, что добавление rewriteBatchedStatements=true в строку подключения решает мою проблему.

См. https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

Я не уверен, что это правильноисправить, хотя.

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