强制失败的mvn flyway:迁移以跳过失败的模式迁移,并尝试执行下一个模式

时间:2016-06-15 06:56:59

标签: postgresql maven flyway

我试图在我的项目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执行下一个架构定义?

2 个答案:

答案 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>