Postgresql 强制失败的mvn flyway:迁移以跳过失败的架构迁移,并尝试执行下一个架构
我试图在我的项目Postgresql 强制失败的mvn flyway:迁移以跳过失败的架构迁移,并尝试执行下一个架构,postgresql,maven,flyway,Postgresql,Maven,Flyway,我试图在我的项目postgres数据库上运行flyway:migrate。我已经手动更改了一个表,因此使用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.c
postgres数据库上运行flyway:migrate
。我已经手动更改了一个表,因此使用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>descschema\u版本
版本\排名
装机容量
版本
说明
类型
脚本
校验和
由
已安装在
执行时间
成功
对于失败的迁移,成功字段值存储为0,若要覆盖该值并执行下一个flyway:migration,您可以手动将该值设置为1(这将确保在迁移失败时不会丢失手动创建的表上存储的数据)
(2) 。在运行flyway时在pom.xml上添加以下内容:临时迁移(测试时)也有帮助
false