【问题标题】:Liquibase changelog without MD5SUM没有 MD5SUM 的 Liquibase 变更日志
【发布时间】:2017-11-27 09:00:11
【问题描述】:

我在这里有一个使用 Liquibase 更新的数据库。如果我理解正确,Liquibase 将应用变更集并向DATABASECHANGELOG 表写入一行,其中包含执行日期和 MD5 校验和。这样,Liquibase 可以发现变更集(意外)何时发生变化。

但是,在这个数据库中,许多(大部分)MD5SUM 条目是NULL。我不知道为什么会这样。这是否是一种正常的操作模式?

在使用 Liquibase status 命令时,我看到许多“未应用” 更改。如果没有 MD5 和,Liquibase 如何确定呢?或者没有 MD5 和的变更集是否被视为已更改。

【问题讨论】:

  • 我无法真正回答这个问题(因为我不监督整个 liquibase 代码,以了解校验和的“NULL”值是否是 liquibase 知道如何处理的有效值)。但这对我来说似乎很奇怪。 (我相信)有一个非常重要的用于创建校验和的类:CheckSum.java。也许你想看看它,看看是否有帮助......

标签: liquibase


【解决方案1】:

有问题的DATABASECHANGELOG 被两个不同的程序使用。这可能有问题,但过去效果很好。

直到……程序开始使用不同版本的 Liquibase 和不同格式的 MD5SUM。检测到这一点后,Liquibase 将NULL 写入整个列(这本身就是有问题的),从而删除了所有其他程序的所有校验和。根据 Liquibase 运行的顺序,不同的校验和集最终仍然是 NULL

【讨论】:

  • 问题解决了吗?我有同样的问题,它破坏了我们的部署。
  • 除了在任何地方使用相同的 Liquibase 版本外,没有办法彻底解决这个问题。这里的“解决方案”是编写所有脚本,使它们具有先决条件或幂等性——我认为这很糟糕,但它确实有效。
猜你喜欢
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 2014-02-12
  • 2021-01-18
  • 2016-08-01
相关资源
最近更新 更多