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

Flyway不会忽略乱序迁移脚本,使用outOfOrder=false

濮阳宁
2023-03-14

我没有使用outOfOrder。我希望能够添加一个不是最新的迁移脚本(例如,修复现有脚本,而不更改该脚本)。

我希望在尚未迁移的数据库上运行新脚本,作为正常排序的一部分。任何最新的数据库(例如手动修复的)都应忽略新脚本。

从留档:

OutOfOrder—允许迁移“无序”运行。如果您已经应用了版本1和3,并且现在找到了版本2,那么它也将被应用,而不是被忽略。

这表明新脚本将被忽略,但我收到错误:

错误:验证失败:检测到已解决的迁移未应用于数据库

只有当db基线在它前面时,新脚本才会被忽略吗?这是预期的行为吗?

如果是这样,我想我的解决方案是:

  • 使用outOfOrder,将我的所有脚本复杂化为幂等
  • 在每次迁移后对数据库进行基线检查

共有1个答案

朱伯寅
2023-03-14

有一个拉取请求将及时合并Flyway 5.1.0:https://github.com/flyway/flyway/pull/1866

在此之前,您还可以通过将validateOnMigrate设置为false来禁用验证。

 类似资料:
  • 我们面临一个问题:假设一个开发人员在处理分支a的过程中提供了一个新的迁移版本,比如说V331,同时一个QA人员在另一个分支B的QA环境中进行QA。可能会出现qa环境已经有v331版本的情况,因为几个开发人员可能会在不同的时间在不同的分支上创建相同的版本号……更多的是qa经常在分支之间切换,这就是qa数据库变得混乱的原因,特别是表schema_version,这导致我们手动删除损坏的模式版本,解决旧

  • 我用试用密钥尝试了State/BaselineMigration功能。https://flywaydb.org/documentation/concepts/baselinemigrationsFlyWay迁移执行脚本并正确移动到正确的版本。但在此基础上运行的所有迁移都失败了 从S开始2__xxx.sql然后它在版本2的模式表中创建一行并键入"SQL_STATE_SCRIPT" 再次执行flywa

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

  • 我当前的项目有几个Flyway迁移,用于将初始数据导入数据库。这个数据是方便的,特别是对于开发人员能够快速设置项目。生产数据通过一些批处理作业导入,具有较新的版本。 其中有些迁移相当大(~20MB),因此每次应用程序启动时,Flyway都要花费一些时间来计算迁移的校验和。这也是集成测试的一个问题,因为它们也需要更长的时间。 null 我还有什么其他选择?如果可能的话,我希望使用Flyway而不是手

  • 我正在尝试使用gradle脚本迁移一些SQL表: 在脚本目录中,我只有一个SQL脚本: 当我运行 时,我得到输出: 在测试数据库中,创建了schema_version表,但没有创建表位置。 flyway的目录结构是: 我是否缺少飞行路线的一些其他设置?非常不幸的是,我没有收到任何错误消息。

  • 我想使用 Flyway 获取特定数据库的最新架构版本值。Flyway 中是否有函数可以在命令行中获取当前架构版本号? 我可以运行以下命令: 这为我提供了数据库的整个架构内容(缩短),如下所示: 我只对最后一个架构条目版本“1.5.9”值感兴趣。 我的环境如下: < li>Windows 7 < li>Flyway 3.0