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

Flyway回滚脚本命名疑问:R/U前缀不生效,如何正确命名?

Flyway回滚脚本命名问题解答

首先要明确核心点:你当前使用的flyway-core是Flyway社区版,R(Rollback)和U(Undo)前缀的回滚脚本是Flyway商业版(Enterprise/Teams)专属功能,社区版并不支持——这就是你遇到"不符合文件名规范"提示的根本原因。

社区版的回滚实现方式

社区版没有自动回滚机制,只能通过手动编写反向变更的迁移脚本完成回滚,命名必须严格遵循社区版的迁移脚本规范:

  • 前缀固定用V,后跟版本号、双下划线,再添加清晰的描述
  • 例如,针对已执行的V1.0.0__Alter_Student_Schema.sql,你需要创建V1.0.1__Rollback_Alter_Student_Schema.sql,在该脚本中编写撤销之前变更的SQL(比如删除新增列、回滚表结构修改等)
  • 执行flyway migrate命令时,这个新的V版本脚本会被当作普通迁移执行,从而实现回滚效果

若要使用R/U前缀的自动回滚

如果想使用Flyway文档中提到的R/U前缀回滚脚本,你需要做以下调整:

  1. 升级到Flyway商业版(Enterprise或Teams)
  2. 将依赖替换为商业版坐标(例如flyway-enterprise)
  3. 确保回滚脚本与对应的正向迁移严格匹配:
    • 针对V1.0.0__Alter_Student_Schema.sql,回滚脚本命名为U1.0.0__Alter_Student_Schema.sql(Undo脚本)或R1.0.0__Alter_Student_Schema.sql(Rollback脚本,具体命名规则以对应商业版版本的文档为准)
  4. 在配置中启用Flyway回滚相关参数(比如flyway.undoableMigrationPrefix等)

关于V前缀脚本"正常运行"的说明

你用V1.0.0__Alter_Student_Schema.sql作为回滚脚本时,Flyway并非将其识别为回滚操作,而是当作普通的正向迁移脚本执行。如果该版本未被执行过,脚本会正常运行;但如果之前已经执行过V1.0.0版本,再次运行会提示版本已存在,无法重复执行——这并不是真正的回滚逻辑。

内容的提问来源于stack exchange,提问作者Tom Leonardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:33:28