You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Flyway生成DELETE类型迁移,避免版本切换后迁移重复执行报错?

问题根因

该行为是Flyway默认的迁移一致性校验逻辑导致的:当Flyway启动时会扫描当前类路径下的所有迁移脚本,和flyway_schema_history表中已执行的记录做对比,如果发现有已经执行过的脚本在当前类路径下不存在,默认会标记该脚本为DELETED状态,后续重新检测到该脚本时会判定为未执行,触发重复执行逻辑导致报错。

解决方案

你可以通过修改Flyway配置,忽略缺失的已执行迁移,即可禁用DELETED类型记录的生成,不同场景配置写法如下:

Spring Boot项目配置

  • properties格式(application.properties):
spring.flyway.ignore-missing-migrations=true
  • yaml格式(application.yml):
spring:
  flyway:
    ignore-missing-migrations: true

命令行运行Flyway

flyway -ignoreMissingMigrations=true migrate

Maven插件配置

在pom.xml的Flyway插件配置节点中添加如下配置:

<configuration>
  <ignoreMissingMigrations>true</ignoreMissingMigrations>
</configuration>

历史异常数据修复

如果你的flyway_schema_history表中已经生成了DELETED类型的记录,直接手动删除这条异常记录后,再启动2.0版本的项目即可正常运行,无需修改已创建的业务表。


内容的提问来源于stack exchange,提问作者Andrei Yusupau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:04