我试图在我的项目flyway:migrate
上运行postgres database
。我已手动对表进行了更改,因此使用flyway的模式迁移失败,这阻止了下一个模式迁移执行。
table : foo
required_change : ALTER TABLE foo ALTER COLUMN id DROP NOT NULL
current_schema_version : 2
next_schema_version : 3
错误:
[ERROR] com.googlecode.flyway.core.api.FlywayException: Migration of schema "public" to version 3 failed! Changes successfully rolled back.
如何跳过失败的架构并使flyway:migrate
执行下一个架构定义?
答案 0 :(得分:1)
撤消手动更改可能最简单,以便Flyway可以成功运行。例如,如果您删除了列然后将其重新添加,则运行Flyway脚本将其删除。
答案 1 :(得分:0)
所以我找到了一个可能解决这个问题的方法,如下所示:
(1)。在mysql数据库中有一个表 schema_version ,它维护迁移版本号,它的状态和其他相关信息。 对于前
的MySQL> desc schema_version;
version_rank
installed_rank
版本
说明
键入
脚本
校验
installed_by
installed_on
执行时间处理时间
成功
对于失败的迁移,成功字段值存储0,以覆盖它并执行下一个flyway:迁移您可以手动将值设置为1(这样可以确保您不会丢失存储在迁移失败时手动创建的表。
(2)。在运行flyway时在pom.xml上添加以下内容:临时迁移(在测试时)也有帮助。
<validateOnMigrate>false</validateOnMigrate>