微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

确定要由 liquibase 执行的唯一更改的变更集要求

如何解决确定要由 liquibase 执行的唯一更改的变更集要求

我遇到了以下有关 liquibase 的文档,但对它如何识别独特更改的措辞感到困惑。 https://docs.liquibase.com/concepts/basic/changeset.html

上面写着:
'如果它已运行,除非在该变更集中将 runAlways 标记设置为 true,否则将跳过该变更集。运行变更集中的所有更改后,Liquibase 将在 DATABASECHANGELOG 中插入一个带有 id/author/filepath 的新行以及变更集的 MD5Sum。'。

我的问题是:

  • 当这 3 个属性ALL 与 DATABASECHANGELOG 表中存储的内容不同时,是否唯一标识更改?或者
  • 当这 3 个属性中的 ANY 与更改日志表中存储的内容不同时,将唯一标识更改。

解决方法

DATABASECHANGELOG 的主列由您提到的三列组成(至少在 liquibase 2.0.5 版本中,这是相当古老的):

ALTER TABLE databasechangelog 
  CONSTRAINT pk_databasechangelog 
  PRIMARY KEY (id,author,filename);

正如@veljkost 指出的,当前版本 4.3.2 没有主键,因为一些数据库供应商限制了索引的长度。

,

来自DATABASECHANGELOG table docs

该表将每个变更集作为一行进行跟踪,由“id”、“author”和“filename”列的组合标识。表上没有主键。这是为了避免对密钥长度的任何特定于数据库的限制。 “id”、“author”和“filename”的组合在表的所有行中都是唯一的。

意思是,如果任何属性不同,则将其视为新的唯一条目,并且 Liquibase 不会将 MD5Sum 与该表中任何已存在的行进行比较。例如,即使 ID 值相同,当您开始使用 Liquibase 时,这可能并不明显。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。