如何在 liquibase 格式的 sql 中为任何指定有效校验和?

问题描述

我遇到了 liquibase 的问题。所以,我在其中一个变更集中的 sql 命令中犯了一个错误。现在每当我尝试升级我的部署时,升级都会由于错误的校验和而失败。 所以我想到做 validCheckSum : ANY workaround 并遇到了这个问题,但它不起作用。所以我的问题是,我的语法是否有任何错误以及如何绕过校验和检查或在 liquibase 格式的 sql 中设置 any 的正确语法是什么。

这是我试过的

--changeset darth: build-1.3
--validCheckSum: build-1.3:ANY

它不起作用。

请帮忙!谢谢!

解决方法

文档说:

特殊值“1:any”将匹配任何校验和

不知道你为什么要输入“build-1.3:ANY”?

您还可以做的是:

  • 在空数据库上执行包含最新 liquibase 更改的代码
  • DATABASECHANGELOG 表中查找包含您已更改的变更集 ID 的行
  • 复制 MD5SUM 值并将其作为 validCheckSum 值粘贴到您的变更集定义中

它应该可以在任何已执行变更集的数据库上运行而不会出错。

值得一提的是,不建议更改更改集:通过设置 validCheckSum 值,您将已执行“旧”更改集,并且将跳过对此更改集的“新”更改。将在空数据库上执行您的“新”变更集,因此您可能会出现模型不一致的情况。