liquibase 是否有一种方法可以在不实际执行的情况下测试回滚策略?



我是Liquibase的新手...

今天我用 --liquibase 格式的 sql 编写了一个 Liquibase 变更集。

我创建了两个表,其中第二个表与第一个表具有外键依赖关系。

我的回滚策略是(错误地)删除表1;删除表2。当我运行更新并测试回滚时,由于外键约束,它失败了。但是,当我纠正错误并尝试重新运行它时,它失败了,因为校验和不匹配。

我知道显而易见的答案是制作更多的原子变更集,但是......

Liquibase 是否支持一种无需实际运行即可测试此类内容的方法,以便我可以避免编辑回滚时的校验和问题?

失败:是否有针对校验和问题的解决方法,让我在运行更新后编辑我的文件? (ctrl+z?

对你的问题的简短回答是,没有Liquibase没有这样的东西。

Liquibase 是一个很棒的工具包,但它没有很多花里胡哨的东西,而且它对如何使用它或你的工作流程应该是什么没有太多的"意见"。在您的情况下,我建议处理该问题的一种方法是删除数据库,然后从更改日志中重新创建它。如果您已经在多个位置部署了更改日志,那可能是不可能的,如果您没有准备好这样做,这可能是一个问题。

有一个选项可以在变更集上指定validChecksums属性,因此您可以使用它,但一般来说,如果您使用它,则会使更改日志更加复杂。

如果您想查看功能更齐全并且能够在部署更改之前预测更改的内容,请查看我公司的产品 Datical DB。它的核心使用liquibase,但增加了更多(并相应地定价)。

Liquibase提供了updateTestingRollback命令,该命令基本上更新数据库,然后测试其回滚,如果成功,则再次应用更改。

无效校验和的问题可以通过clearCheckSums命令解决。它会从数据库中删除当前校验和,并在下次更新时重新计算已部署的更改集的校验和,并且将部署尚未部署的更改集。

有关更多详细信息,请查看 Liquibase 命令。

相关内容

最新更新