我删除了一些从某个时间点开始的不可重复的迁移flyway_schema_history
。现在,我想重新运行这些迁移,以便将它们插入到历史表中,但它们当然会失败,因为它们已经被应用(例如重命名的列)。是否有一种方法可以将迁移应用于历史表而无需在数据库中实际运行迁移?如果没有这种方法,有没有其他的方法来解决这个问题,你可以建议?repair
选项不工作,然后再次不确定我是否使用它的权利。
我删除了一些从某个时间点开始的不可重复的迁移flyway_schema_history
。现在,我想重新运行这些迁移,以便将它们插入到历史表中,但它们当然会失败,因为它们已经被应用(例如重命名的列)。是否有一种方法可以将迁移应用于历史表而无需在数据库中实际运行迁移?如果没有这种方法,有没有其他的方法来解决这个问题,你可以建议?repair
选项不工作,然后再次不确定我是否使用它的权利。
2条答案
按热度按时间iecba09b1#
我刚刚运行了一系列测试来验证这一点,FLYWAY REPAIR是处理这一问题的方法。
错误:验证失败:迁移验证失败检测到应用的迁移未在本地解析:4.1.如果您有意删除此迁移,请运行修复以将迁移标记为已删除。
然后,如果运行REPAIR,您应该看到类似以下的内容:
不需要修复架构历史记录表“public”.“flyway_schema_history”中失败的迁移。未检测到失败的迁移。正在修复版本“4.1”的架构历史记录表(标记为DELETED)...已成功修复架构历史记录表“public”.“flyway_schema_history”(执行时间00:00.080s)。
对现有迁移的多次删除起作用。
ugmeyewa2#
我的一个迁移失败了,因为它与数据库的当前状态相冲突,因为迁移已经应用(重命名列),所以仅仅删除迁移记录是不够的。最后,我手动插入记录 *,然后 * 运行flyway:repair修复校验和。我希望有人能提供一个更干净的解决方案,但这对我很有效。