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

如何使用flyway跳过特定的迁移?

禄仲渊
2023-03-14

我在gradle中使用flyway,我在数据库控制台中手动运行了其中一个迁移,我想运行flyway,但告诉它忽略所有其他迁移版本之间的一个特定迁移版本。可以这样做吗?

共有3个答案

虞博涛
2023-03-14

从版本7开始,您可以直接将其添加到Maven或Grade文件

格拉德尔-斯基普

flyway {
     skipExecutingMigrations = true
}

Maven-Skip

<configuration>
     <skipExecutingMigrations>true</skipExecutingMigrations>
</configuration>

文档参考跳过

Gradle-樱桃采摘

flyway {
     cherryPick = '2.0'
}

Maven-Cherry Pick

<configuration>
     <cherryPick>2.0</cherryPick>
</configuration>

文档参考樱桃采摘

万俟小林
2023-03-14

不推荐,但如果您仍想:

1) 运行flywayMigrate,让迁移失败
2)手动更新特定版本迁移的flyway元表(成功列)
3)再次运行Flyway迁移
4)完成后,flyway将从下一版本的迁移开始。

艾志尚
2023-03-14

您必须对其进行一些修改才能使其正常工作,因此我不建议使用这种方法,但在紧要关头它会起作用。

我只对Maven进行了测试,但我很确定它对Gradle也适用。

>

# Assuming you applied 01.002 manually
$ mvn flyway:migrate -Dflyway.target=01.001

为应用的脚本插入一行

-- Make sure these vals closely replicate those from other rows
insert into schema_version( installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success) 
values ( 2, '01.002', 'static_data', 'SQL', 'V01/V01.002__static_data.sql', null, 'username', current_timestamp, 0, true );

修复schema_version校验和

$ mvn flyway:repair

应用其他迁移

$ mvn flyway:migrate -Dflyway.validateOnMigrate=false -Dflyway.outOfOrder=true

这两个-D属性可能没有必要,这取决于插入的是否正确。例如,Flyway可能与您的脚本描述不一致,即使校验和现在是正确的。

 类似资料:
  • 问题内容: MyBatis迁移将每个SQL文件分为两部分: 一种用于向前迁移一个版本 一种用于迁移回一个版本 如何使用Flyway回滚版本? 问题答案: 尽管Flyway支持回滚(仅作为商业功能),但不鼓励使用它: https://flywaydb.org/documentation/command/undo 尽管撤消迁移的想法很好,但不幸的是,有时它在实践中会崩溃。一旦您进行了破坏性的更改(删除

  • 我们中的两个人在不同的GIT分支中制作了一个迁移脚本。现在,我已经拉动了源开发分支,并更正了 GIT 合并问题,并将我的迁移脚本重命名为最后一个。因此,数据库的新初始化和从开发分支的版本迁移数据库将是可以的。 然而,我的本地测试数据库中有很多数据,所以我手动应用了我在GIT中引入的新迁移脚本。然而,我不能让flyway认为,一切都很好。 那么,我如何才能伪造迁移? 当我尝试迁移时,我收到以下错误:

  • 我们正在Spring Boot App中的java中配置/开始我们的flyway迁移。 所以我们有sql和java迁移文件。 在某些环境中,我们希望运行额外的迁移。基本上,在QA环境中,我们希望为DB准备测试数据。 所以我知道你可以在java中配置多个迁移位置。 所以我可以这样做 我的问题是版本控制和确保在所有环境中按预期执行内容。 我是否需要保持编号系统的正确顺序? 假设我有以下迁移脚本,应该在

  • 所以我有 我读过Baeldung的文章和其他东西,但似乎我的选项是自定义类型(这是一个原始类型)或全局类型。如何实现这种自定义序列化?

  • 问题内容: 我了解到使用Java进行flywaydb迁移可与JDBC连接一起使用,并且还可以通过SpringTemplate进行spring支持,但是flyway不适用于DAO。 对于具有更多关系的表/实体,使用DAO而不是sql进行迁移使工作变得更加容易。 是否有解决方案或解决方法来解决此问题? 问题答案: 首先,Flyway拥有自己的事务管理系统,并且不使用Spring事务处理。 如果您的DA