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

为何我用Java实现的迁移类被过滤?附调试信息

排查Flyway Java迁移类被过滤的可能原因

以下是针对你的V18__Move_TE_Highlight_Flds.class被过滤的常见排查点:

  • 检查BaseJavaMigration的包路径
    确认你的类继承的是Flyway官方的org.flywaydb.core.api.migration.BaseJavaMigration,而非其他框架的同名类。如果导包错误,Flyway无法识别这是一个合法的迁移类。

  • 验证类的实际访问权限
    虽然代码声明为public class,但要确认编译后的class文件确实是public修饰。比如某些IDE编译设置或构建工具(如Maven/Gradle)的配置可能意外改变了类的访问权限。

  • 确认类路径与扫描路径匹配
    检查编译后的class文件是否确实位于classpath:db/migrations路径下。比如Maven项目中,源码需放在src/main/java/db/migrations下,编译后才会进入target/classes/db/migrations;若误放在src/main/resources下,会被当作资源文件而非类文件处理。

  • 检查Flyway的过滤配置
    查看是否配置了flyway.ignoreMigrationPatterns属性,该属性可能通过通配符匹配到了你的迁移类。同时确认flyway.sources是否仅包含db/migrations,未排除该路径。

  • 核对迁移类命名规则
    虽然你的命名看起来符合V<版本号>__<描述>.class格式,但需确保:

    • 版本号是纯数字(你的18符合要求)
    • 版本号与描述之间是两个下划线(你这里是V18__...,正确)
    • 描述中没有Flyway不允许的特殊字符(如空格、@等,你的下划线是允许的)
  • 排查Flyway版本兼容性
    若使用的Flyway版本较旧,可能对Java迁移类的继承要求不同。比如部分旧版本要求直接实现Migration接口而非继承BaseJavaMigration,升级到对应版本的Flyway即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:24:43