当前位置: 首页 > 知识库问答 >
问题:

Flyway 3.0迁移校验和不匹配

华永逸
2023-03-14

将Flyway Maven插件从2.3升级到3.0后,我得到了:

[错误]无法在项目xxx上执行目标org.flywaydb:flyway-maven-plugin:3.0:migrate(default-cli):org.flywaydb.core.api.flywayexception:验证失败。发现应用的迁移和可用的迁移之间存在差异:迁移V003__data_feed_sources_locations的迁移校验和不匹配。sql:db=942424992,classpath=1117634405->[帮助1]

在其他项目上也有类似的错误。

如果我降级回2.3,迁移运行正常。这是否与计算校验和的不同平台编码有关?

有什么变通的办法,或者更好的,适当的解决办法吗?

共有1个答案

孔才
2023-03-14

Flyway 3.0将validateOnMigrate的默认值更改为True。

然而,这是一件好事,因为在快速失败的精神下,错误被发现得更快。

在您的例子中,有些脚本在应用后确实发生了更改,这就是Flyway报告的内容。

    null
 类似资料:
  • 从升级到时,我收到以下错误,尽管SQL脚本没有改变: Spring Boot建议 为确保架构升级顺利进行,请按照以下说明操作: > < li> 首先将您的1.5.x Spring Boot应用程序升级到Flyway 4(撰写本文时为4.2.0),请参见Maven和Gradle的说明。 将架构升级到 Flyway 4 后,升级到Spring启动 2 并再次运行迁移以将应用程序移植到 Flyway 5

  • 每次更改DB结构时,我都使用时间戳创建一个新的迁移文件,以便按顺序执行,在一个干净的数据库中使用migrate命令(使用maven插件或命令行工具),它可以很好地工作,但在一个生产数据库中,使用相同的DB结构但添加了数据,我会得到以下错误:

  • Flyway 4.2.0中的可重复Java迁移存在问题。 例如,我编写了一个可重复的Java迁移,它为每个具有特定列的表创建一个触发器。此迁移的ChecksumProvider计算缺少触发器的表的连接名称的哈希代码。 > 当表列表不为空时,hashcode不同于零(将其命名为xxx),并且对于每个表,都会向数据库添加一个合适的触发器。在这种情况下,hascode xxx被写入“schema_ver

  • 我正在flyway的CMD中运行命令,但脚本文件的迁移会出现以下异常 [错误]无法执行目标组织。flywaydb:flyway maven插件:3.2.1:在convertopia auto db:org项目上迁移(默认cli)。flywaydb。果心应用程序编程接口。FlywayException:验证失败。迁移1.0.53的迁移描述不匹配[错误]- 我尝试过,它说构建成功,但问题仍然没有解决。

  • 使用validation验证器 仓库地址: validation 安装 composer require illuminate/validation 我们先单例validation验证器 namespace App\Vendor\Validators; use Illuminate\Validation\Factory; class Validator extends Factory {

  • 所以我有几个可重复的迁移。 创建一个视图(删除它 现在假设我修改了第一次迁移,结果视图不再包含第二次迁移使用的列。Flyway将愉快地重新运行第一次迁移,第一个视图将被重新创建,第二个视图将由于级联选项而被删除。 在此之后,我希望第二次(依赖的)迁移也会运行,并且会抛出一个错误(因为它使用了一个不再存在的列)。 这样可能吗? 以某种方式强制flyway检查现有迁移的结果是否不再存在?或者可能存在类