强制失败的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>