1

按照文档,我能够让数据库迁移插件在一个现有项目上工作,该项目已经有很多表并且正在生产中运行。我在本地经历了以下过程:

Pulled down latest production database
Source production database to local dev
grails dbm-generate-changelog changelog.groovy
grails dbm-changelog-sync
grails dbm-gorm-diff 2012-06-25-latest.groovy --add
grails dbm-update

我理解为什么我必须在本地执行每一项操作才能达到应用未来变更集的目的。但是,现在我想在我的一台测试服务器上运行我的 2012-06-25-latest.groovy。它已经拥有基于我们生产数据库的最新数据库。

我尝试只运行 dbm-update 但没有同步它无法创建已经存在的表。所以我运行了 dbm-changelog-sync 但是在运行 dbm-update 时它实际上并没有应用最新的文件。

我知道我可以将上下文(标签)添加到更改集并在运行 dbm-update 时指定该上下文,但我想知道这是否是解决此问题的唯一方法,或者我的工作流程是否需要修改;将更改日志应用于测试服务器的最佳方法是什么?

4

1 回答 1

0

我最终做的是删除 DATABASECHANGELOG 表中 FILENAME = '2012-06-25-latest.groovy' 的所有行。然后我运行了 dbm-status,它告诉我有 256 个更改在等待。然后我运行了 dbm-update,一切都很好。

我不确定这是应该如何完成的,但它似乎奏效了。

更新:除此之外,我可能会在一个空数据库上运行整个迁移,然后只使用 INSERT 语句对生产数据库进行 mysqldump。

于 2012-06-25T15:10:13.100 回答