gpt4 book ai didi

grails 变更日志先决条件不执行任何操作

转载 作者:行者123 更新时间:2023-12-02 08:10:52 27 4
gpt4 key购买 nike

我正在尝试使用更改日志对数据库进行更改。由于我无法保证特定代码当前存在但可能存在的值,因此我需要能够检查它们以便执行插入或更新。

这是我一直在测试的内容,它似乎没有做任何事情。欢迎任何建议。

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 的 dbm-update解析 TubeCapUpdate.groovy 时出现问题:没有方法签名:grails.plugin.databasemigration.DslBuilder.sqlCheck() 适用于参数类型:(java.lang.String, java.lang.String) 值:[1, SELECT * FROM ltc2_tube_cap WHERE code=11] (使用 --verbose 重新运行以查看堆栈跟踪)解析changelog.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()适用于参数类型:(java.lang.String,java.lang.String)值:[1,SELECT * FROM ltc2_tube_cap其中代码=11] 在 grails.plugin.databasemigration.DslBuilder.invokeMethod(DslBuilder.groovy:117) 在 Script1$_run_closure1_closure2_closure3.doCall(Script1.groovy:13) 在 grails.plugin.databasemigration.DslBuilder.invokeMethod(DslBuilder.groovy:117) 在 Script1$_run_closure1_closure2.doCall(Script1.groovy:12) 在 grails.plugin.databasemigration.DslBuilder.invokeMethod(DslBuilder.groovy:117) 在 Script1$_run_closure1.doCall(Script1.groovy:11) 在 grails.plugin.databasemigration.GrailsChangeLogParser.parse(GrailsChangeLogParser.groovy:84) 在 grails.plugin.databasemigration.DslBuilder.handleInincludedChangeLog(DslBuilder.groovy:747) 在 grails.plugin.databasemigration.DslBuilder.createNode(DslBuilder.groovy:139) 在 grails.plugin.databasemigration.DslBuilder.createNode(DslBuilder.groovy:590) 在 grails.plugin.databasemigration.DslBuilder.invokeMethod(DslBuilder.groovy:117) 在 Script1$_run_closure1.doCall(Script1.groovy:6) 在 grails.plugin.databasemigration.GrailsChangeLogParser.parse(GrailsChangeLogParser.groovy:84) 在 liquibase.Liquibase.update(Liquibase.java:107) 在 DbmUpdate$_run_closure1_closure2.doCall(DbmUpdate:26) 在 _DatabaseMigrationCommon_groovy$_run_closure2_closure11.doCall(_DatabaseMigrationCommon_groovy:59) 在 grails.plugin.databasemigration.MigrationUtils.executeInSession(MigrationUtils.groovy:133) 在 _DatabaseMigrationCommon_groovy$_run_closure2.doCall(_DatabaseMigrationCommon_groovy:51) 在 DbmUpdate$_run_closure1.doCall(DbmUpdate:25)

最佳答案

您的 sqlCheck 先决条件语法不正确。

 sqlCheck(expectedResult:'1', 'SELECT * FROM [ltc2_tube_cap] WHERE code=11')

请注意,代码中的第一个参数是赋值语句 expectedResult=1,它应该是映射条目 expectedResult:1

我在这个 Jira 页面上找到了隐藏的答案。 https://jira.grails.org/browse/GPDATABASEMIGRATION-40讽刺的是,这是在文档中添加大量数据库迁移 DSL 示例。

关于grails 变更日志先决条件不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524383/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com