Grails 数据库迁移 - 更改以前的迁移
Grails database migration - changing previous migrations
不幸的是,我刚刚注意到我之前的一次迁移中的一个问题,即我指定了 baseTableSchemaName,但现在无法使用其他名称创建数据库。
我想没有人对如何更改这些然后清除生产中的校验和有任何建议。而以下;
grails dbm-clear-checksums
可以在开发中使用,对我来说,生产中没有安装grails。
有没有办法自动执行这个和最坏的情况,您可以简单地更新数据库更改日志 table 以将 MD5SUM 设置为空吗?
我不知道你的问题的所有细节,特别是问题是需要修复多少条数据库变更日志记录。但是我可以分享我通常对我的应用程序所做的经验(我使用 grails 2.5.5)。
例如,假设我们编辑的迁移很少,而且校验和不匹配。我执行以下操作:
- 在开发环境中创建测试数据库并将所有迁移与其上的最新版本同步。因此,在开发数据库中,您将拥有正确的 md5sum 值。好消息是,这些总和与环境无关,仅依赖于迁移内容本身。
- 转到生产数据库并使用从开发数据库中获取的正确值手动更新记录。
- 迁移不应再有校验和冲突。
这是我采用的解决方案,它可能不如我希望的那么优雅,但可能会帮助处于类似情况的其他人。
只需更新所有数据库变更日志记录并设置 md5sum = null。新校验和在下一次数据库迁移更新时计算。
不幸的是,我刚刚注意到我之前的一次迁移中的一个问题,即我指定了 baseTableSchemaName,但现在无法使用其他名称创建数据库。 我想没有人对如何更改这些然后清除生产中的校验和有任何建议。而以下;
grails dbm-clear-checksums
可以在开发中使用,对我来说,生产中没有安装grails。
有没有办法自动执行这个和最坏的情况,您可以简单地更新数据库更改日志 table 以将 MD5SUM 设置为空吗?
我不知道你的问题的所有细节,特别是问题是需要修复多少条数据库变更日志记录。但是我可以分享我通常对我的应用程序所做的经验(我使用 grails 2.5.5)。 例如,假设我们编辑的迁移很少,而且校验和不匹配。我执行以下操作:
- 在开发环境中创建测试数据库并将所有迁移与其上的最新版本同步。因此,在开发数据库中,您将拥有正确的 md5sum 值。好消息是,这些总和与环境无关,仅依赖于迁移内容本身。
- 转到生产数据库并使用从开发数据库中获取的正确值手动更新记录。
- 迁移不应再有校验和冲突。
这是我采用的解决方案,它可能不如我希望的那么优雅,但可能会帮助处于类似情况的其他人。
只需更新所有数据库变更日志记录并设置 md5sum = null。新校验和在下一次数据库迁移更新时计算。