【问题标题】:Grails database migration - changing previous migrationsGrails 数据库迁移 - 更改以前的迁移
【发布时间】:2017-05-26 16:01:33
【问题描述】:

不幸的是,我刚刚注意到我之前的一次迁移中的一个问题,我指定了 baseTableSchemaName,现在无法创建具有替代名称的数据库。 我认为没有人对如何更改这些然后清除生产中的校验和有任何建议。而以下;

grails dbm-clear-checksums

可以在 dev 中使用,对我来说,grails 没有安装在生产中。

有没有办法自动化这个和最坏的情况,你可以简单地更新 databasechangelog 表以将 MD5SUM 设置为 null 吗?

【问题讨论】:

    标签: grails database-migration liquibase


    【解决方案1】:

    我不知道您的问题的所有细节,尤其是问题是需要修复多少个数据库更改日志记录。但我可以分享我通常对我的应用程序所做的经验(我使用 grails 2.5.5)。 例如,假设我们有很少的迁移被编辑并且校验和不匹配。我执行以下操作:

    1. 在开发环境中创建测试数据库并将所有迁移与最新版本同步。因此,在开发数据库中,您将拥有正确的 md5sum 值。好消息是,这些总和与环境无关,仅依赖于迁移内容本身。
    2. 转到生产数据库并使用从开发数据库中获取的正确值手动更新记录。
    3. 迁移不应再存在校验和冲突。

    【讨论】:

    • Tbh,我希望尝试一步解决此问题,而不是更新单个记录。我也使用 Grails 2.5.5。实际上,我只是继续测试了解决方案,我更新了所有数据库更改日志记录并设置 md5sum = null。这对我有用。你有什么理由不采用这种简单的方法来解决问题?无论如何都会在下次数据库迁移更新时计算新的校验和。
    • @dre > 你有什么理由不采用这种简单的方法来解决问题?它实际上并没有出现在我的脑海中。谢谢你的结果。下次遇到麻烦时,我会对其进行测试:)我确实相信您必须将解决方案发布为答案并将其标记为已接受的答案。你的解决方案比我的简单得多。
    • 谢谢@Andrej。这不是我想要的,但无论如何我都会添加它,以防 hit 对其他人有帮助。
    【解决方案2】:

    这是我后来采用的一个解决方案,它可能不像我希望的那样优雅,但可能会帮助处于类似情况的其他人。

    只需更新所有 databasechangelog 记录并设置 md5sum = null。在下次数据库迁移更新时计算新的校验和。

    【讨论】:

      猜你喜欢
      • 2017-01-08
      • 2011-05-22
      • 1970-01-01
      • 2011-01-07
      • 2013-08-15
      • 1970-01-01
      • 2012-01-15
      • 2015-12-25
      相关资源
      最近更新 更多