我现在刚刚在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)
我有以下文件夹:
您可以看到我具有“ db / migration”,但没有任何迁移,我现在就开始。调试类FlywayAutoConfiguration我得到以下信息:
因此,我尝试返回“ classpath:”中的所有文件,请参见:
请注意,我只有“ application.properties”文件。
答案 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文件,通常在两种情况下会发生此问题
就我而言,我已经将sql文件放在那儿了,但仍然给出了相同的错误, 基本上,我使用复制粘贴从某个地方放置此sql文件。
当我尝试使用IDE在同一位置添加一个新文件(Intellij:右键单击迁移文件夹->新建-> Flyway迁移->版本化迁移)时,它会问我(警告)一些微妙的配额(通常是我们在数据库配置中提到过,我也放置在那儿),它开始工作。
答案 5 :(得分:0)
正如@Guy 在他的回答中所建议的,我在迁移文件夹中创建了一个 SQL 文件并将其留空。在迁移文件夹 v1_0__mock_flyway.sql
中命名为 classpath:db/migration
。错误已解决。