【发布时间】:2020-07-19 18:42:33
【问题描述】:
我正在将一个项目从 Spring Boot 1.5.21 迁移到 2.2.5。我已按照guide 中的所有说明进行操作。但是,我遇到了 flyway 问题(从 4.2.0 升级到 6)。
以前,当我在src/test/resources/db/migration 下有 sql 迁移文件时,flyway 会将它们作为mvn clean install 命令的一部分运行。现在,由于某种原因,它停止运行这些迁移(澄清一下,我说的是maven 构建,而不是在运行应用程序时)。
我正在使用 maven 3.6.3 和 flyway-maven-plugin version 6.0.8 并进行以下配置(某些值是与此问题无关的标记):
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>${flyway.version}</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>migrate</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>${db.skip}</skip>
<url>${db.url}</url>
<user>${db.username}</user>
<password>${db.password}</password>
<locations>
<location>classpath:db/migration</location>
</locations>
<schemas>public,downstream</schemas>
<outOfOrder>true</outOfOrder>
<callbacks>
db.migration.callback.PopulateControlFieldsFlywayCallback,db.migration.callback.UpdateReplicaIdentityFlywayCallback,db.migration.callback.UpdateSchemaHistoryTableFlywayCallback
</callbacks>
</configuration>
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
</dependencies>
</plugin>
为什么行为会改变?如何恢复旧行为?我错过了什么吗?
【问题讨论】:
-
您是否尝试使用调试日志运行 maven 构建?
-
一条评论,与您的问题无关。请注意,flyway 4 中的迁移日志放在
schema_versions表中,但在 flyway 6 中 - 在flyway_schema_history中。请注意何时更新您的 PROD 代码。你可以在这里阅读它stackoverflow.com/questions/49063385/… -
@MaximPopov - 我已经使用调试日志运行了 maven 构建,并比较了我的更改前后,但找不到原因。另外,我知道元数据表名称的变化,我正在处理它(通过 flyway 回调重命名我的旧表),但正如你所指出的,它是不相关的,因为即使在新环境中也会发生问题。跨度>
-
我的理解是正确的,maven 构建只是停止并且什么都不做吗?可以分享一下之前的日志吗?
-
@MaximPopov Maven 失败,因为我使用 Jooq 从 DB 表生成类,但我需要从中生成类的表是应该在停止运行的 sql 迁移中创建的表,所以错误日志中是问题的结果,而不是飞行路径行为变化的原因
标签: spring-boot maven-3 flyway spring-boot-maven-plugin