【发布时间】:2012-12-21 04:18:18
【问题描述】:
我们希望使用数据库迁移工具通过我们的 Jenkins(Hudson) 构建服务器在我们的 UAT 和实时系统中实现数据库架构更改。
最简单的方法是每次运行“-Dgrails.env=uat dbm-gorm-diff changelog-.xml --add”。但是,我的试验表明,即使在域模型中没有更改时,始终会创建“空”更改日志并更新 changelog-master.xml。这并不理想。
是否有一个我没有找到的选项,上面写着:“仅当域模型发生更改时才创建更改日志”?
否则,看起来我将不得不在 Ant 构建脚本中添加步骤以在 changelog-.xml 文件中查找条目,如果未找到:删除该文件并从备份中恢复主变更日志,或对其进行编辑以删除最新的“包含”条目。
如果有人有其他好的想法,他们将非常欢迎。
问候,约翰
【问题讨论】:
-
什么版本的插件?
-
版本 1.2.2。这是 GGTS 通过其插件管理器找到的最新版本。我想要的设施是最新的 1.3.2 吗?啊!我刚刚发现(还记得吗?)我必须通过插件管理器显式刷新才能找到任何更高版本。我刚拿到 1.3.2。
-
1.3.2 的行为方式是否相同?
-
呃……不。而不是一个“空的”changelog-02,它充满了删除我的两个表及其链接表中所有列的语句。我不明白为什么会这样。它是一个错误吗?我已经仔细检查过了。我可以在数据库中看到 databasechangelog 表,它的内容显示了来自 dbsync 的初始条目,以及当我向其中一个表中添加一列时的一个条目。我的两个域对象没有改变。我刚刚为 uat 环境启动了一个运行应用程序,一切都井井有条。我知道它使用的是同一个数据库,因为我的第一次启动失败了,因为我忘记关闭数据库连接
-
伯特。我刚刚注意到 DdmGormDiff.groovy 在 1.2.2 和 1.3.2 之间发生了变化,因此可能会有不同的行为。我正在测试我的小脑袋,试图了解如何编写 Gant 脚本。我在 Notepad++ 中打开它作为如何编写 Gant 脚本的一个可能有用的示例(我想要一个脚本来调用 DbmGormdiff 和 parms 以从 Jenkins 调用,以及 test-app 和 war)。当我更新插件时,我允许删除的文件保持打开状态。这就是为什么我可以看到这些变化,但到目前为止,还不能真正理解代码。约翰