Flyway找不到classpath:db / migrations

时间:2019-03-24 21:37:00

标签: java flyway java-11

我现在刚刚在Intellij中使用Spring Boot版本2.1.3和带有Java 11的Flyway 5.2.4开始了一个新项目。

尝试启动我的项目后,我得到了:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flyway' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.flywaydb.core.Flyway]: Factory method 'flyway' threw exception; nested exception is java.lang.IllegalStateException: Cannot find migrations location in: [classpath:db/migration] (please add migrations or check your Flyway configuration)

我有以下文件夹:

enter image description here

您可以看到我具有“ db / migration”,但没有任何迁移,我现在就开始。调试类FlywayAutoConfiguration我得到以下信息:

enter image description here

因此,我尝试返回“ classpath:”中的所有文件,请参见:

enter image description here

请注意,我只有“ application.properties”文件。

6 个答案:

答案 0 :(得分:1)

我相信Flyway至少需要一个迁移脚本才能初始化。尝试将简单的sql创建脚本添加到您的迁移文件夹中,然后再尝试一次。另外,您可以禁用对飞行路线的依赖性,直到需要它为止。

答案 1 :(得分:1)

即使将迁移文件放在 db/migration 文件夹中,flyway 也不会检测到它。

然后,您必须通过添加以下内容来明确设置 application.properties(或 appliocation.yml)中的位置来解决此问题:

spring.flyway.locations=classpath:db/migration

N.B:你还需要至少有一个脚本来初始化 flyway,你甚至可以放一个空的。但是你至少要有一个脚本

答案 2 :(得分:1)

Flyway 至少需要一个脚本,禁用它,直到你需要它,在 application.properties 文件中使用以下命令

spring.flyway.enabled=false

答案 3 :(得分:0)

我有一个类似的错误,并按以下步骤解决:我添加了这些命令

spring.flyway.baselineOnMigrate=true
spring.flyway.check-location=true
spring.flyway.locations=classpath:db/migration
spring.flyway.schemas=public
spring.flyway.enabled=true

到application.properties

答案 4 :(得分:0)

答案不是那么有用或准确。但是这个问题使您感到沮丧,所以我给出了解决方案。

在我的情况下,找不到相同的db.migrate文件,通常在两种情况下会发生此问题

  1. 路径不正确,请尝试使用设置的位置参数值。
  2. db.migrate文件夹不包含任何文件。
  3. 检查文件名:V1_1 __(short_desc)
  4. 尝试运行,使用mvn编译flyway:migrate

就我而言,我已经将sql文件放在那儿了,但仍然给出了相同的错误, 基本上,我使用复制粘贴从某个地方放置此sql文件。

当我尝试使用IDE在同一位置添加一个新文件(Intellij:右键单击迁移文件夹->新建-> Flyway迁移->版本化迁移)时,它会问我(警告)一些微妙的配额(通常是我们在数据库配置中提到过,我也放置在那儿),它开始工作。

答案 5 :(得分:0)

正如@Guy 在他的回答中所建议的,我在迁移文件夹中创建了一个 SQL 文件并将其留空。在迁移文件夹 v1_0__mock_flyway.sql 中命名为 classpath:db/migration。错误已解决。