2

我在新项目中使用带有数据库迁移插件的 Grails 2.3.5 以了解它是如何工作的。但有时 dbm-gorm-diff 提供空的更改日志文件,即使更改也存在。例如,

我有没有任何属性的人员域类。最初创建更改日志时,它将在更改日志中创建 2 个字段 id 和 version。之后,将 2fields name,age 添加到该人员类中。然后 dbm-update 和 dbm-gorm-diff 给出如下所示。

数据库更改日志 = { }

有时会给出变化。有时不工作。请帮我。为什么它会这样工作。抱歉英语不好。

4

3 回答 3

5

使用以下教程对我有用。确保dbCreateDataSource.groovy. 根据教程,工作流程如下:

设置

  1. dbCreate从中删除DataSource.groovy
  2. 最初运行grails dbm-generate-gorm-changelog changelog.groovy
  3. 通过运行将更改日志与您的数据库同步grails dbm-changelog-sync

更改域

  1. 更改域类
  2. grails dbm-gorm-diff <your-filename>.groovy --add
  3. grails dbm-changelog-sync

希望这可以帮助

于 2014-05-14T07:20:07.327 回答
3

我花了一些时间寻找同样问题的答案。

警告:我使用 Grails 交互式 shell 来发出命令,包括dbm-*命令。

仅靠蛮力,我得出的结论是域类不能可靠地重新加载。为了获得一致的结果(尤其是在生成新changeLog文件时),每当我修改域类时,我都会停止并重新启动 Grails 交互式 shell,然后再调用dbm-gorm-diff. 我尝试过发出其他命令,例如clean,和它们compile,但它们只是不起作用,并且Grails 交互式 shell 启动时的标志似乎也没有任何区别。packagerefresh-dependencies-reloading

然而,重新启动 Grails 交互式 shell 似乎确实可以可靠地工作,我认为这样做让我很恼火:)

那些不使用交互式 shell 的人应该不会遇到这个问题,因为域类是随每个命令调用加载的。

于 2014-07-01T14:08:00.453 回答
2

博客有详细的分步说明,特别是迁移旧数据库部分帮助我们成功迁移。

于 2014-05-14T08:03:14.367 回答