【问题标题】:Flyway migration not recognizing beforeValidate.sqlFlyway 迁移无法识别 beforeValidate.sql
【发布时间】:2026-01-29 14:00:02
【问题描述】:

尝试使用 beforeValidate.sal 回调文件进行 Flyway 迁移时出现以下错误:

Wrong migration name format: beforeValidate.sql(It should look like
this: 1.2__Description.)

Flyway 似乎无法识别这是回调脚本的名称。

我在去年 12 月对此进行了测试,它运行良好。但是当我现在尝试时,我得到了那个错误。

更新:终于有更多的时间来研究这个。此功能以前适用于 Flyway 4.1.2。当我回滚到那个版本时,事情会按预期工作。它不适用于 Flyway 5.0.4(我们已在代码库中升级到)或最新的 Flyway 5.0.7。 Flyway 是否放弃了对该功能的支持,或者可能更改了一些未记录的内容?

UPDATE2:进一步缩小了范围。这在 Flyway 4.2.0 中仍然有效,但在 Flyway 5.0.2 中不起作用。另外,请注意我们使用的是 Gradle,因此使用 Gradle 插件会失败。我无法尝试使用 Flyway 5.0.0 或 5.0.1,因为这些版本的 Gradle 插件似乎不可用。

【问题讨论】:

    标签: migration flyway


    【解决方案1】:

    最终将问题归结为配置错误。我们使用 Gradle 插件,并且我们没有更新设置以说明 sqlMigrationSuffixes 现在是多值的。我们仍在将其设置为

    sqlMigrationSuffixes = '.sql'

    什么时候应该设置为

    sqlMigrationSuffixes = ['.sql']

    显然,在我们的案例中,这足以混淆 Flyway 并导致它无法将 beforeValidate.sql 识别为回调脚本之一。

    【讨论】: