Liquibase 是否有与 Flyway 的 clean-on-validation-error 类似的选项

问题描述 投票:0回答:1

由于版本问题,我们在 Spring Boot 3 环境中从 Flyway 切换到 Liquibase。 由于我们仍处于非生产环境中,我们的数据库架构正在快速变化,我们不关心数据丢失。 然而,当我们改变模式时,我们不想引入新的脚本,而是只要我们没有生产力就改变初始脚本。

在使用 Flyway 时,我们将使用选项 clean-on-validation-error 来仅在必须应用架构更改时删除现有数据库。

在 Liquibase 中,我们只找到了 drop-first 选项,这会导致每次重新启动应用程序时都会重置数据库,即使没有部署新版本,而是让 kubernetes 重新启动 pod。

当我说“我们不关心数据丢失”时,我指的是测试应用程序时生成的数据。当数据库清空时,有很多“核心数据”必须由批处理作业生成。

我的问题: 有没有办法使用 Spring Boot 3 和 Liquibase 模拟 Flyway 的

clean-on-validation-error
行为?

我们做了什么: 阅读 docs.liquibase.com 上的文档,尝试了多个 liquibase 属性

java spring-boot liquibase flyway
1个回答
0
投票

我已经有一段时间没有与 Liquibase 密切合作了,但这里有一些对此的想法。

我相信您描述的用例不是很常见,因为代码往往会频繁更新和部署,并且在高于本地容器的任何环境层中,现有变更集的更改可能(并且很可能将会)给团队带来问题和时间损失。使变更集原子化、可逆且不可变是 Liquibase 的最佳实践。否则,您可以花时间执行手动回滚、对变更集校验和应用修复,以及运行重新部署。

但是你仍然有选择(其中一些无论如何都值得做):

Liquibase 非常灵活,但我怀疑是否可以仅使用一个参数来完成您想要的操作。不过,我可能错过了一些东西。

© www.soinside.com 2019 - 2024. All rights reserved.