Groovy Sql withBatch在MySQL中无限期挂起

时间:2018-10-02 15:13:12

标签: mysql groovy amazon-rds-aurora

我在处理Groovy的Sql处理批处理语句时遇到问题。当执行batch语句时,代码会无限期地挂起,而不会出现错误。

下面是我正在运行的代码的示例:

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

不过,我不确定这是否是正确的解决方法。

0 个答案:

没有答案