liquibase是否有一种方法来测试回滚策略而不实际执行它?

时间:2018-03-19 20:43:57

标签: liquibase

我是Liquibase的新手......

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

我创建了两个表,其中第二个表对第一个表有外键依赖。

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

我知道明显的答案是制作更多原子变化集,但是......

Liquibase是否支持在不实际运行的情况下测试此类事物的方法,以便我可以避免编辑回滚的校验和问题?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

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

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

有关更多详细信息,请检查Liquibase commands