域 类 和数据库在 Grails 中不同步

Domain classes and database are out of sync in Grails

我遇到了这个奇怪的问题。我有一个 Grails 应用程序,其中缺少一些数据库更改日志文件。因此,数据库与域 类 不同步。我在域 类 中做了一些更改。当我尝试 运行 数据库迁移插件时,它在当前域 类 和数据库之间创建差异,并尝试执行已经 [=19] 的所有 sql 命令=] 这导致执行我要执行的命令时出错。

这个问题有解决办法吗?

如果我对你的问题的理解正确,你可以使用 dbm-generate-changelog re-create 所有缺失的更新日志。这将根据当前数据模型创建变更日志。然后您可以使用 dbm-changelog-sync 将这些变更日志标记为已执行(这将填充 DATABASECHANGELOG table)。一旦 DATABASECHANGELOG table 与当前数据模型同步,您可以使用 dbm-gorm-diff 来确保您没有遗漏任何其他数据模型更改。

https://grails-plugins.github.io/grails-database-migration/1.4.0/ref/Maintenance%20Scripts/dbm-changelog-sync.html

注意:我的回答假设您使用的是 Grails 2.x 和数据库迁移插件 1.4.x,但我相信这个过程在 Grails 3.x 和数据库迁移插件中是相似的2.x 或 3.x.