liquibase升级后如何解决liquibase校验和验证失败

时间:2016-01-07 12:28:19

标签: java maven liquibase checksum

在我的项目中,我尝试将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>

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

4 个答案:

答案 0 :(得分:9)

您还可以使用<changeSet><validCheckSum>子标记将新校验和添加为有效校验和。

另外,查看有关错误CORE-1950的评论。您可以将日志级别设置为&#34; debug&#34;在你的两个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标记的值是变更集的新校验和。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

使用gradle ./gradlew liquibaseClearChecksums

答案 3 :(得分:0)

mvn liquibase:clearCheckSums

将清除校验和