Flyway - 找不到迁移位置

Pau*_*ulB 10 flyway spring-boot

我似乎无法让 flyway 知道在哪里寻找我的迁移。我的文件结构是从 spring 初始化生成的默认文件。我的迁移在:./demo/src/main/kotlin/db/migration 我的迁移是基于 Java 的

我的 application.properties 文件如下所示:

spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.url=jdbc:postgresql://${JDBC_DATABASE_URL}/jpaTestDatabase
spring.datasource.username=${JDBC_DATABASE_USERNAME}
spring.datasource.password=${JDBC_DATABASE_PASSWORD}

spring.flyway.baseline-on-migrate=true
spring.flyway.locations=classpath:demo/src/main/kotlin/db/migration

spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=validate
spring.session.store-type=none
Run Code Online (Sandbox Code Playgroud)

我尝试了几个类路径:

/demo/src/main/kotlin/db/migration
demo/src/main/kotlin/db/migration
/src/main/kotlin/db/migration
src/main/kotlin/db/migration
Run Code Online (Sandbox Code Playgroud)

以上似乎都不起作用。

我怎样才能让 flyway 知道迁移的位置?

Ole*_*han 18

我有一个不同的问题,我的迁移文件名V1_Base_version.sql不是V1__Base_version.sql. Flyway 需要__在名称前缀中使用双下划线。

  • 这是一个救星! (3认同)
  • 打字错误会引发第三次世界大战,谢谢。 (3认同)
  • 这很容易错过..解决了我的问题 (2认同)

acd*_*ior 10

就我而言,我收到该错误消息是因为我通过 IDE 中的复制粘贴创建了文件夹(而不是像通常那样手动创建)。

我实际上有(这不起作用):

src/main/resources/db.migration/
Run Code Online (Sandbox Code Playgroud)

而不是正确的(有效):

src/main/resources/db/migration/
Run Code Online (Sandbox Code Playgroud)

db.migration版本显然不起作用,但在 IDE 上很难发现。


Ali*_*ien 9

默认情况下,Flyway 将在 db/migration 下的类路径上查找迁移,这在 Maven 项目中意味着 src/main/resources/db/migration。

确保您有这样的目录。

参考flyway-db-migration-folder

  • 这不再起作用了。您需要存储库根目录的路径。这意味着尝试“位置:文件系统:我的其他文件夹”。如果您使用 Intellij,只需从存储库根目录复制路径,它将立即起作用。在 Flyway 6.4.4 和 spring-boot 2.2.6.RELEASE 上使用 java 版本 11 进行了测试 (2认同)