grails数据库迁移—即使没有域模型更改,也会生成更改日志

grails数据库迁移—即使没有域模型更改,也会生成更改日志,grails,database-migration,Grails,Database Migration,我们希望通过Jenkins(Hudson)构建服务器,使用数据库迁移工具在UAT和实时系统中实现DB模式更改 最简单的方法是每次运行“-Dgrails.env=uat dbm gorm diff changelog-.xml--add”。但是,我的试验表明,始终会创建一个“空”变更日志,并更新changelog-master.xml,即使域模型中没有任何更改。这并不理想 是否有一个选项我还没有找到,那就是:“仅在域模型发生更改时创建更改日志” 否则,看起来我必须在Ant构建脚本中加入步骤,以查找

我们希望通过Jenkins(Hudson)构建服务器,使用数据库迁移工具在UAT和实时系统中实现DB模式更改

最简单的方法是每次运行“-Dgrails.env=uat dbm gorm diff changelog-.xml--add”。但是,我的试验表明,始终会创建一个“空”变更日志,并更新changelog-master.xml,即使域模型中没有任何更改。这并不理想

是否有一个选项我还没有找到,那就是:“仅在域模型发生更改时创建更改日志”

否则,看起来我必须在Ant构建脚本中加入步骤,以查找changelog-.xml文件中的条目,如果找不到,则删除该文件并从备份中还原主变更日志,或者编辑它以删除最新的“include”条目

如果有人有其他好主意,他们将非常欢迎


关于这一点,John安装1.3.2似乎添加了一些插件删除时未删除的内容。对不起,这不是一个很科学的描述,但它就是这样出现的

现在我又回到了1.2.2,但无论运行什么dbm-*脚本,我都会得到相同的错误:

======================

执行脚本DbmGenerateGormChangelog时出错:groovy.lang.MissingMethodException:没有方法签名:static grails.plugin.databasemigration.MigrationUtils.dataSourceNameWithSuffix()适用于参数类型:(null)值:[null](注意:堆栈跟踪已被筛选。请使用--verbose查看整个跟踪。) groovy.lang.MissingMethodException:没有方法的签名:static grails.plugin.databasemigration.MigrationUtils.dataSourceNameWithSuffix()适用于参数类型:(null)值:[null] 在"DatabaseMigrationCommon"groovy$"运行"closure1.doCall("DatabaseMigrationCommon"groovy:37) 在DbmGenerateGormChangelog$_run_closure1.doCall(DbmGenerateGormChangelog:23) 执行脚本DbmGenerateGormChangelog时出错:groovy.lang.MissingMethodException:没有方法签名:static grails.plugin.databasemigration.MigrationUtils.dataSourceNameWithSuffix()适用于参数类型:(null)值:[null]

==============

我删除了1.3.2,重述了GGTS,然后安装了早期版本,甚至回到了1.2.1,然后又重新调整到1.2.2,但没有任何变化。看起来我可能需要尝试一个新的工作区,看看我是否可以让1.2.2再次工作。 Rgds,John要避免:

grails.plugin.databasemigration.MigrationUtils.dataSourceNameWithSuffix()适用于参数类型:(null)值:[null]位于

你不必改变项目名称等所有这些事情,你只需要清楚


“path_to_user_dir”/.grails/projects/“project_name”/scriptCache目录

插件的哪个版本?版本1.2.2。这是GGTS通过其插件管理器找到的最新版本。我想要的设施是最新的1.3.2吗?啊!!我刚刚发现(记得吗?)我必须通过插件管理器显式刷新才能找到任何更高版本。我刚刚得到了1.3.2。1.3.2的表现也一样吗。。。不是。它不是一个“空”的changelog-02,而是充满了删除我的两个表及其链接表中所有列的语句。我不明白为什么会这样。是虫子吗?我仔细检查过了。我可以在DB中看到databasechangelog表,它的内容显示了来自dbsync的初始条目,以及我在其中一个表中添加列时的一个条目。我的两个域对象保持不变。我刚刚为uat环境启动了一个跑步应用程序,一切正常。我知道它使用的是同一个DB,因为我的第一次发射失败了,因为我忘了关闭DB connctnBurt。我刚刚注意到DdmGormDiff.groovy在1.2.2和1.3.2之间发生了变化,因此可能会出现不同的行为。我正在测试我的小脑袋,试图了解如何编写甘特脚本。我在Notepad++中打开了它,作为编写Gant脚本的一个可能有用的示例(我想要一个脚本,用parms调用DbmGormdiff,并从Jenkins调用,以及测试应用程序和war)。当我更新插件时,我允许删除的文件保持打开状态。这就是为什么我可以看到这些变化,但是,到目前为止,我还不能真正理解代码。约翰菲。导出应用程序,删除dbm插件,重命名应用程序并关闭GGTS。使用新的工作区打开GGTS,导入应用程序,添加dbm插件1.2.2。现在我可以像以前一样运行dbm-*脚本了。