Java 通过Spring Boot,仅在版本内(仅限上次更新文件)可重复迁移

Java 通过Spring Boot,仅在版本内(仅限上次更新文件)可重复迁移,java,database,spring-boot,flyway,Java,Database,Spring Boot,Flyway,我们希望使用Flyway的方式允许重复上一次迁移,只要最后一个schemaVersion尚未发布,那么最后一个db changefile不仅将被重新执行,而且如果可能的话,在清除最后一次更改之后(因此我推断这不完全是可重复迁移的概念) 有没有解决这个问题的办法或好主意?我们使用SpringBoot来配置Flyway进程 编辑:到目前为止(多亏了Axel),我发现了这两种选择: 0.任何更改的增量模式,即使是在发布中(避免这是问题的动机) 1.在发布之前的任何管道/部署中使用spring.fly

我们希望使用Flyway的方式允许重复上一次迁移,只要最后一个schemaVersion尚未发布,那么最后一个db changefile不仅将被重新执行,而且如果可能的话,在清除最后一次更改之后(因此我推断这不完全是可重复迁移的概念)

有没有解决这个问题的办法或好主意?我们使用SpringBoot来配置Flyway进程

编辑:到目前为止(多亏了Axel),我发现了这两种选择:

  • 0.任何更改的增量模式,即使是在发布中(避免这是问题的动机)

  • 1.在发布之前的任何管道/部署中使用spring.flyway.cleanOnValidationError属性设置为true这意味着如果我们在快照之前更改版本控制的脚本,我们将在发布管道中部署时意识到这一点

  • 2.使用可重复迁移(R_;)并进行一些修改,以便在发布管道问题期间将名称更改为版本化迁移: 创建和删除是可以的,但是修改需要IF的PL/SQL 存在部分

  • 3.将db迁移提供程序更改为支持降级的提供程序(同样的flyway文档表示这通常是一个有问题的想法)


如果没有人找到更好的解决方案,我会接受Axel的答案

flyway.cleanOnValidationError
设置为
true
,以获得您想要的(或非常接近的结果):在开发中快速迭代,在迁移发生变化时自动重新创建模式。

这仅适用于开发人员还是其他环境?我认为,仅适用于开发人员,集成阶段总是使用发行版(因此它们永远不需要更新版本化的模式文件)有趣的特性。如果我理解正确,这将清理模式并从一开始就开始应用所有迁移。但是,在我们在生产中发现错误之前,我们如何保证除去最后一个脚本的所有脚本保持一致性?我的意思是,这与重新创建数据库完全相同。如果有人更改了以前发布的模式迁移脚本(而不是“快照”版本),并将其推送到CI/CD。。。在非开发环境中部署时,我们稍后会在管道中意识到错误。您仅在开发环境中启用此功能。一旦进入CI环境,就会发现这些类型的错误。啊。。我理解dev指的是一个故障安全的环境。在发布之前,我们在管道中部署了几次,并且这个部署必须是功能性的(但不是关键性的)