我正在尝试使用更改日志对数据库进行更改。由于我不能保证特定代码的值当前存在,但可能存在,因此我需要能够检查它们以便进行插入或更新。
这是我一直在测试的,它似乎没有做任何事情。欢迎任何意见。
databaseChangeLog = {
changeSet(author:'kmert', id:'tubecap-insert-update-1') {
preConditions(onFail="WARN",onFailMessage:"Tube cap does not exist,skipping because it cannot be updated."){
sqlCheck(expectedResult='1', 'SELECT * FROM [ltc2_tube_cap] WHERE code=11')
}
grailsChange {
change {
sql.execute("""
UPDATE [ltc2_tube_cap]
SET [name] = 'White'
WHERE [code] = 11;
""")
}
rollback {
}
}
}
}
更新:我运行了更改日志脚本,但现在出现此错误。我从在线资源中找到了代码。我找不到很多关于先决条件的文档...
| 为数据库 hapi_app_user @ jdbc:jtds:sqlserver://localhost;databaseName=LabTraffic;MVCC=TRUE;LOCK_TIMEOUT=10000 解析 TubeCapUpdate.groovy 问题启动 dbm-update:没有方法签名:grails.plugin.databasemigration.DslBuilder.sqlCheck( ) 适用于参数类型:(java.lang.String, java.lang.String) 值:[1, SELECT * FROM ltc2_tube_cap WHERE code=11] (使用 --verbose 重新运行以查看堆栈跟踪)问题解析更改日志.groovy:没有方法签名:grails.plugin.databasemigration.DslBuilder.sqlCheck() 适用于参数类型:(java.lang.String, java.lang.String) 值:[1, SELECT * FROM ltc2_tube_cap WHERE code= 11](使用 --verbose 重新运行以查看堆栈跟踪)groovy.lang.MissingMethodException:没有方法签名:grails.plugin.databasemigration.DslBuilder.sqlCheck() 适用于参数类型: