Flyway-在以下位置找不到迁移位置

时间:2018-11-06 13:51:24

标签: spring-boot flyway

我似乎无法让flyway知道在哪里寻找我的移民。 我的文件结构是从spring initializr生成的默认文件结构。 我的迁移位于:./ 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

我尝试了几种类路径:

/demo/src/main/kotlin/db/migration
demo/src/main/kotlin/db/migration
/src/main/kotlin/db/migration
src/main/kotlin/db/migration

以上似乎都不起作用。

我如何让flyway知道迁移在哪里?

5 个答案:

答案 0 :(得分:2)

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

确保您具有这样的目录。

引用flyway-db-migration-folder

答案 1 :(得分:2)

我遇到了另一个问题,我的迁移文件名为V1_Base_version.sql,而不是V1__Base_version.sql。 Flyway在名称前缀中需要双下划线__

答案 2 :(得分:1)

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

我实际上有(没用):

src/main/resources/db.migration/

而不是正确的(起作用的):

src/main/resources/db/migration/

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

答案 3 :(得分:0)

您必须使用以下内容汇总或取消注释flyway.locations行

flyway.localtions =文件系统:。

进入flyway.conf配置文件。

答案 4 :(得分:0)

就我而言,诀窍是:一旦 Flyway 成功运行更新脚本,它就会创建表 flyway_schema_history,记录我已经成功运行了一次创建脚本。

我在执行过程中来回播放,更改 spring.jpa.hibernate.ddl-autovalidate,然后 create-drop,然后返回。

因此,当我第二次尝试运行该脚本时,该脚本被拒绝,但由于在 spring.jpa 中运行时应用程序关闭时最初创建的表(在我的情况下称为“自行车”)被删除。 hibernate.ddl-auto=create-drop 模式之前,我得到了

SchemaManagementException: Schema-validation: missing table [bike] 异常。

解决办法是:删除flyway_schema_history表或者删除上次运行对应的记录,重新滚动!