Flyway 迁移无法识别 beforeValidate.sql

Posted

技术标签:

【中文标题】Flyway 迁移无法识别 beforeValidate.sql【英文标题】:Flyway migration not recognizing beforeValidate.sql 【发布时间】:2018-06-27 21:22:46 【问题描述】:

尝试使用 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 插件似乎不可用。

【问题讨论】:

【参考方案1】:

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

sqlMigrationSuffixes = '.sql'

什么时候应该设置为

sqlMigrationSuffixes = ['.sql']

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

【讨论】:

以上是关于Flyway 迁移无法识别 beforeValidate.sql的主要内容,如果未能解决你的问题,请参考以下文章

Flyway Java 迁移在命令行工具中不起作用

Flyway迁移,无法从DataSource获取Jdbc连接

无法为 PostgreSQL 表应用 Flyway 迁移

无法在 Spring Boot 中将 Flyway 迁移与 postgresQL 连接起来

清洁后无法启动或迁移的flyway

无法在 Spring 应用程序中使用 Flyway 1.6 进行迁移