验证失败:检测到的应用迁移未在本地解决 |飞路

Posted

技术标签:

【中文标题】验证失败:检测到的应用迁移未在本地解决 |飞路【英文标题】:Validate failed: Detected applied migration not resolved locally | Flyway 【发布时间】:2020-02-26 14:48:45 【问题描述】:

在设置 flyway 时,我的 spring-boot 应用程序中出现此错误

org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class] 中定义名称为“flywayInitializer”的 bean 创建错误:调用 init 方法失败;嵌套异常是 org.flywaydb.core.api.FlywayException:验证失败:检测到应用迁移未在本地解决:1.5.4

属性文件

spring.jpa.hibernate.ddl_auto=update
spring.jpa.hibernate.use-new-id-generator-mappings=false
spring.flyway.locations=classpath:db/migration,classpath:db/vendor/mysql
spring.flyway.baseline-on-migrate=true
spring.flyway.baseline-version=1.0.2
spring.flyway.table=schema_version
spring.flyway.enabled=true

以上配置在其他项目中运行良好。

我尝试在我的 pom.xml 中添加此插件,但仍然无法正常工作

<plugin>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-maven-plugin</artifactId>
        <configuration>
            <argline>$argline flyway:migrate -Dflyway.ignoreMissingMigrations=true</argline>
        </configuration>
</plugin>

【问题讨论】:

您的数据库有一个版本1.5.4,它可能已从项目中删除。只需确认您是否仍可在项目中使用1.5.4 是的,我只是发现它不存在,谢谢@SukhpalSingh,所以我在配置中忽略了以前的版本 如果不再需要此版本,您可以删除schema_version(flyway数据库表)中声明/搜索它的行(列版本) 【参考方案1】:

如果您使用的是配置文件,请尝试使用:

flyway.outOfOrder=true
flyway.ignoreMissingMigrations=true

【讨论】:

【参考方案2】:

我在部署发布分支时遇到了这个问题,该分支从 master 中挑选了一些提交。

我已经通过添加属性解决了这个问题:

spring:
  flyway:
    ignore-missing-migrations: true

请参考https://flywaydb.org/documentation/configuration/parameters/ignoreMissingMigrations 和https://flywaydb.org/documentation/configuration/parameters/outOfOrder。

您可以添加 outOfOrder 选项以在下一次挑选时迁移旧版本的 sql 脚本(挑选较旧的提交):

spring:
  flyway:
    ignore-missing-migrations: true
    out-of-order: true

【讨论】:

【参考方案3】:

您可以通过在本地数据库中执行此命令来解决您的问题。

delete from flyway_schema_history where version = '1.5.4'

【讨论】:

如果我只是要部署一个不包含新版本脚本的发布分支,但在主分支上我已经将最新版本的脚本迁移到 db 怎么办?

以上是关于验证失败:检测到的应用迁移未在本地解决 |飞路的主要内容,如果未能解决你的问题,请参考以下文章

飞路错误故障

Flyway - Flyway 架构迁移失败

耳部部署期间的飞路迁移

未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序。

通过詹金斯上的 Maven 作业导致的飞路迁移错误

数据库本地连接失败,错误代码18456怎么解决?