You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Spring Boot项目中Liquibase升级引发的ValidationFailedException?

Liquibase升级后校验和错误的修复方案

问题原因

Liquibase 4.22版本调整了校验和计算逻辑,与4.20版本的算法存在差异,导致未修改的changeset文件计算出的校验和与数据库中存储的旧校验和不匹配,触发ValidationFailedException。

修复方法

方法一:清除旧校验和,重新生成新校验和

使用Liquibase内置的clearCheckSums命令清除数据库中存储的所有旧校验和,下次执行变更时会自动计算并存储符合新版本算法的校验和:

  • 直接使用Liquibase CLI:
    liquibase clearCheckSums
    
  • Maven项目:
    mvn liquibase:clearCheckSums
    
  • Gradle项目:
    ./gradlew liquibaseClearChecksums
    

执行后重新运行update或其他变更命令即可。

方法二:给指定changeset添加校验和豁免

如果不想全局清除校验和,可以在单个changeSet标签中添加validCheckSum属性,指定接受旧校验和或者任意校验和:

  • 接受任意校验和(适合快速解决问题,无需计算旧值):
    <changeSet id="your-changeset-id" author="your-author" validCheckSum="ANY">
        <!-- 原changeset内容 -->
    </changeSet>
    
  • 指定具体的旧校验和值(更严谨,需从报错信息中复制旧校验和字符串):
    <changeSet id="your-changeset-id" author="your-author" validCheckSum="旧校验和字符串">
        <!-- 原changeset内容 -->
    </changeSet>
    

方法三:临时回退校验和算法(不推荐)

Liquibase提供系统参数liquibase.checksum.algorithm可指定旧版本的校验和算法,以此临时规避问题,但该方法会影响新版本特性,不建议长期使用。示例:

liquibase --liquibase.checksum.algorithm=SHA-256 update

内容的提问来源于stack exchange,提问作者Tristate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:42:10