域 类 和数据库在 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
来确保您没有遗漏任何其他数据模型更改。
注意:我的回答假设您使用的是 Grails 2.x 和数据库迁移插件 1.4.x,但我相信这个过程在 Grails 3.x 和数据库迁移插件中是相似的2.x 或 3.x.
我遇到了这个奇怪的问题。我有一个 Grails 应用程序,其中缺少一些数据库更改日志文件。因此,数据库与域 类 不同步。我在域 类 中做了一些更改。当我尝试 运行 数据库迁移插件时,它在当前域 类 和数据库之间创建差异,并尝试执行已经 [=19] 的所有 sql 命令=] 这导致执行我要执行的命令时出错。
这个问题有解决办法吗?
如果我对你的问题的理解正确,你可以使用 dbm-generate-changelog
re-create 所有缺失的更新日志。这将根据当前数据模型创建变更日志。然后您可以使用 dbm-changelog-sync
将这些变更日志标记为已执行(这将填充 DATABASECHANGELOG table)。一旦 DATABASECHANGELOG table 与当前数据模型同步,您可以使用 dbm-gorm-diff
来确保您没有遗漏任何其他数据模型更改。
注意:我的回答假设您使用的是 Grails 2.x 和数据库迁移插件 1.4.x,但我相信这个过程在 Grails 3.x 和数据库迁移插件中是相似的2.x 或 3.x.