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

问题描述:

我试图在我的项目postgres database上运行flyway:migrate。我手动对表进行了更改,并且因为使用flyway的模式迁移失败,阻止了下一个模式迁移执行。强制失败的mvn 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执行下一程序架构中定义的?

撤消手动更改可能是最简单的,以便Flyway可以成功运行。例如,如果删除了该列然后将其添加回来,然后运行Flyway脚本将其删除。

所以我找到了一个解决这个问题的办法,如下:

(1)。在mysql数据库中有一个表schema_version,它维护着迁移版本号,状态和其他相关信息。前者为 。

mysql> desc schema_version;

version_rank
installed_rank 版本
描述
类型
脚本
校验
installed_by
installed_on
execution_time 成功

要迁移失败成功字段值存储0,重写那和执行在下一个飞行路线:迁移时,您可以手动将值设置为1(这可以确保,在迁移失败时,您不会丢失手动创建的表上存储的数据。

(2)。在运行flyway时在您的pom.xml中添加以下内容:临时迁移(测试时)也有帮助。

<validateOnMigrate>false</validateOnMigrate>