Flyway 通配符在 Spring Boot 中不起作用

Posted

技术标签:

【中文标题】Flyway 通配符在 Spring Boot 中不起作用【英文标题】:Flyway wildcard is not working in Spring Boot 【发布时间】:2021-12-06 13:48:57 【问题描述】:

我收到以下错误:


Flyway failed to initialize: none of the following migration scripts locations could be found:

    - classpath:db/*/migrations/

这是目录结构的样子:

这是我尝试过的:

# examples, obviously I tried these independently from each other
spring:
    flyway:
# these work:
        locations: "classpath:db"
        locations: "classpath:db/release_1.0/migrations/"

# these don't work: (I am getting the same error as shown above)
        locations: "classpath:db/**/migrations/"
        locations: "classpath:db/release*/migrations/"
        locations: "classpath:db/*/migrations/"

但它们应该根据 6.4 版的this blogpost 工作。 (我没有看到他们已将其删除)

我用的是spring-boot-starter-parent2.4.1,所以是Flyway 7.1.1

谁能向我解释如何在 Flyway 中使用通配符指定迁移文件夹,为什么它不起作用?

【问题讨论】:

【参考方案1】:

随着 Flyway 的位置支持已经发展到支持通配符、云存储等,Spring Boot 准确检查位置的能力下降为described in this issue。因此,对位置检查的支持在 Spring Boot 2.5 中被弃用,并且在弃用期之后,它将被完全删除。同时,您可以通过将spring.flyway.check-location 设置为false 来关闭它。

【讨论】:

以上是关于Flyway 通配符在 Spring Boot 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Boot 进行 Flyway 修复

将 Flyway 设置为在 Spring Boot 中使用不同的环境

使用 Flyway 和 Spring Boot 在 docker testcontainers 环境中迁移模式

如何在具有 JDBC 安全性的 Spring Boot 中使用 Flyway?

为啥在 Spring Boot 项目中使用 Flyway 时撤消迁移不起作用?

使用 Spring Boot 记录 Flyway sql