使用Grails 2.3.9我试图在数据库迁移变更集中实现常规更改。它使用Grails服务生成UUID。
执行dbm-update失败,“连接代理在事务完成后无法使用”错误。
变更集:
changeSet(author:"sola", id: "gefc.currency.defaultGlobalBaseCurrency.v49") {
grailsChange {
change {
def igs = ctx.getBean("idGeneratorService")
sql.withBatch(20,
"INSERT INTO core_setting_value " +
" (id, version, module, scope, code, " +
" string_value, boolean_value, long_value) " +
"VALUES " +
"(?, 0, 'gefc.currency', 'global', ?, ?, ?, ?)"
) { ps ->
ps.addBatch(igs.uuid(), "baseCurrency", \
"HUF", null, null)
}
confirm 'Base currency configuration (global setting)'
}
}
}
答案 0 :(得分:1)
根本问题在于变更中的groovy代码干扰了Liquibase的事务管理(运行变更集)。
在非事务性的服务方法之后,变更集运行正常。