【问题标题】:How to solve liquibase checksum validation fail after liquibase upgradeliquibase 升级后如何解决 liquibase 校验和验证失败
【发布时间】:2016-01-07 12:28:19
【问题描述】:

在我的项目中,我只是尝试将 liquibase 从 3.2.2 升级到 3.4.2(jar 和 maven 插件)。编辑:升级到 3.3.x 相同。 因此,现在启动应用程序会出现以下错误:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
   4 change sets check sum
   src/main/resources/changelogs/xxx_add_indices_to_event_tables.xml::xxx-add_indices_to_event_tables::xxx is now: 7:0fc8f1faf484a59a96125f3e63431128

这适用于 50 个变更集中的 4 个变更集,所有这些变更集都添加了索引,例如:

<createIndex indexName="idx_eventtype" tableName="events">
    <column name="eventtype" type="varchar(64)"/>
</createIndex>

虽然我可以在本地修复此问题,但在所有运行环境中手动修复这将是一个巨大的痛苦。这是一个错误,还是有一些解决方法?

【问题讨论】:

    标签: java maven liquibase checksum


    【解决方案1】:

    您还可以使用&lt;changeSet&gt;&lt;validCheckSum&gt; 子标签将新校验和添加为有效校验和。

    另外,请查看有关错误 CORE-1950 的 cmets。您可以在两个 liquibase 版本上将日志级别设置为“调试”,看看是否可以在校验和创建的日志输出中找到差异。

    使用类似这样的子标签

    <changeSet id="00000000000009" author="system">
        <validCheckSum>7:19f99d93fcb9909c7749b7fc2dce1417</validCheckSum>
        <preConditions onFail="MARK_RAN">
            <sqlCheck expectedResult="0">SELECT COUNT(*) FROM users</sqlCheck>
        </preConditions>
        <loadData encoding="UTF-8" file="users.csv" separator=";" tableName="users">
            <column name="active" type="boolean" />
            <column name="deleted" type="boolean" />
        </loadData>
    </changeSet>
    

    您应该记住,validCheckSum 标记的值是变更集的新校验和。

    【讨论】:

      【解决方案2】:
      mvn liquibase:clearCheckSums
      

      将清除校验和

      【讨论】:

        【解决方案3】:

        清除校验和对您有用吗?当然,它们将被重新计算。请参阅相关问题here。 希望有帮助

        【讨论】:

        • 你有多少个环境? 3、4,5 liquibase 什么都做——你只需应用一个命令!
        • Liquibase 存在于所有这些环境中,因此您最终需要在每个环境中处理这种情况。使用 liquibase 特定命令或在 rdbms 周围摆弄,并将您自己的更改应用于 liquibase 表。一个小脚本怎么样,可以使用您可以分发给团队的 db 模式名称和凭据进行配置。例如,该脚本将调用 liquibase。
        【解决方案4】:

        使用 gradle ./gradlew liquibaseClearChecksums

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-21
          • 2018-07-26
          • 1970-01-01
          • 2015-08-15
          • 2021-06-09
          • 2015-05-30
          • 2012-04-17
          相关资源
          最近更新 更多