【问题标题】:Liquibase - disable checksum?Liquibase - 禁用校验和?
【发布时间】:2015-08-15 06:28:33
【问题描述】:

如何在 Liquibase 中禁用校验和验证?

看起来 Liquibase 不提供这样的功能。修改 Liquibase 来实现这一目标会很困难吗?请发表您的意见。

【问题讨论】:

  • 谢谢你,马文。该解决方案可行,但我们将 Liquibase 集成到 Spring 应用程序中。我们想要做的是在应用程序部署在服务器上时忽略校验和。那时还没有 Maven。
  • 为什么要禁用校验和?它们是 liquibase 中一个非常重要的功能,旨在防止将变更集多次应用于数据库实例。是的,提供了 clearCheckSums 命令,但这是一个旨在从异常行为中恢复的功能,例如当有人更改变更集时......明白我的意思了吗?通常不应更改变更集。这是使用校验和保护生产数据库的一个示例。
  • 马克,我了解校验和的目的及其重要性。我们仍然想为我们的项目禁用它们。这对我们来说是最好的。
  • 这是关于启动时的部署或验证吗?一些应用在启动前会对数据库进行初始验证。

标签: liquibase


【解决方案1】:

尝试将validCheckSum 添加到changeSet 的顶部,如下所示:

<changeSet>
    <validCheckSum>ANY</validCheckSum>
    <!-- the rest of your changeSet here -->
</changeSet>

【讨论】:

  • 必须是字面值ANY
  • 这适用于 Liquibase 3,但不适用于 Liquibase 2。我们针对 Liquibase 2 提出了这个问题,最终修改了它的代码以实现类似的结果。
  • 请注意,在开发过程中,使用ANY 可能很诱人,但您会在将来自找麻烦。使用实际校验和而不是ANY 是个好主意.
  • @span 我们在我的公司将它用于我们的 csv 加载,因此我们不必为每次更新添加一个新文件到一个大的值列表。如果没有这个,向长 csv 添加一个值将使校验和失败,从而使重用不是一个选项。在我能想到的几乎所有情况下,除了我提到的那个,我同意你的观点,使用 ANY 作为校验和是不好的。
【解决方案2】:

发现这个“您应该能够添加一个空节点来表示校验和应该始终更新,并且如果您有希望定期更改的校验和的 changeSets,则不应失败。” http://forum.liquibase.org/topic/calculation-of-checksum-md5sum#49382000000026967

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-30
    • 2021-07-17
    • 1970-01-01
    • 2017-02-11
    • 2019-10-10
    • 2023-01-17
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多