我在新项目中使用Grails 2.3.5和数据库迁移插件来了解它是如何工作的。但有时dbm-gorm-diff会提供空的changelog文件,甚至有更改。 例如,
我有人域类没有任何属性。 最初创建更改日志时,它将在更改日志中创建2个字段ID和版本。 之后,将2fields名称,年龄添加到该人员类中。然后做了dbm-update和dbm-gorm-diff,给出了类似的内容。
databaseChangeLog = { }
有时提供更改。有时候不起作用。请帮我。为什么它这样工作。抱歉英文不好。
答案 0 :(得分:5)
使用以下tutorial对我有效。确保从dbCreate
中删除DataSource.groovy
。根据{{3}},工作流程如下:
dbCreate
DataSource.groovy
grails dbm-generate-gorm-changelog changelog.groovy
grails dbm-changelog-sync
grails dbm-gorm-diff <your-filename>.groovy --add
grails dbm-changelog-sync
希望这有帮助
答案 1 :(得分:3)
我花了一些时间寻找同一问题的答案。
警告:我正在使用Grails交互式shell发出命令,包括dbm-*
命令。
仅凭蛮力,我得出的结论是域类无法可靠地重新加载。为了获得一致的结果(特别是生成新的changeLog
文件),每次修改域类时,我都会在调用dbm-gorm-diff
之前停止并重新启动Grails交互式shell。我尝试过发布其他命令,例如clean
,compile
,package
和refresh-dependencies
,它们只是不起作用,并且-reloading
标志位于开头Grails交互式shell的结果似乎也没有任何区别。
然而,重新启动Grails交互式shell似乎确实能够可靠地工作,我认为这样做无法实现:)
那些不使用交互式shell的人不应该遇到这个问题,因为每次命令调用都会加载域类。
答案 2 :(得分:2)
此 blog 详细分步说明,特别是迁移旧数据库部分帮助我们成功迁移。