我可以在不重新运行迁移的情况下修复 Flyway 中的版本号吗?
Posted
技术标签:
【中文标题】我可以在不重新运行迁移的情况下修复 Flyway 中的版本号吗?【英文标题】:Can I fix version numbers in Flyway without having migrations rerun? 【发布时间】:2020-04-16 20:17:53 【问题描述】:我们设置了多个版本控制不正确的迁移。文件名将版本放在描述中,因此 db 始终为版本 0。我们想重命名它们,但这会导致所有脚本重新运行。
目前,我们的文件命名为V__001_The_First_Migration.sql
。
我们希望在不重新运行迁移的情况下将它们重命名为 V001__The_First_Migration.sql
。
有没有办法做到这一点?
【问题讨论】:
只需为将来的迁移修复它,否则您将不得不手动干预任何现有数据库。 有多少迁移脚本有错误的命名问题?太多?如果这些很少,我可以建议一种可能需要触发更新查询的解决方案。 @MehulGayate,不幸的是,它远远超过 100 个。有些脚本有CREATE TABLE IF NOT EXISTS
这样的保护措施,但将所有这些都到位的努力会很昂贵。
如果每个脚本的版本实际上都是 0,你是如何做到这一点的?
【参考方案1】:
我认为在 FlyWay 配置中,有一个属性会有所帮助:
flyway.baselineVersion=1.0
重命名所有文件或要重命名的文件,并将“baselineVersion”设置为上次运行或最新的脚本。
这里有更多: https://flywaydb.org/documentation/commandline/baseline
https://flywaydb.org/documentation/maven/baseline
如果您需要更多帮助或示例,请告诉我。
【讨论】:
以上是关于我可以在不重新运行迁移的情况下修复 Flyway 中的版本号吗?的主要内容,如果未能解决你的问题,请参考以下文章
Room 无法验证数据完整性。如何在不编写迁移步骤的情况下修复它?