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

Liquibase Bean创建失败:变更集校验和不匹配问题求助

Liquibase变更集校验和不匹配问题修复

问题说明

关闭项目重新打开后,启动时出现Liquibase校验验证失败,具体错误为变更集的MD5校验和不匹配:

1个变更集校验和不匹配
db/changelog/0.0.1/changelog-create-identity-schema.sql::add-user_accounts_roles-table-constrains::OrestHutovych原本为:9:8df671e96368d2e485f0166207cc5e73,现在变为:9:08a7c0401b617afbb4e89a5b2843b6e0

完整报错栈如下:

org.springframework.beans.factory.BeanCreationException: 创建类路径资源[org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]中定义的名为'liquibase'的Bean失败:liquibase.exception.ValidationFailedException: 验证失败:
     1个变更集校验和不匹配
          db/changelog/0.0.1/changelog-create-identity-schema.sql::add-user_accounts_roles-table-constrains::OrestHutovych原本为:9:8df671e96368d2e485f0166207cc5e73,现在变为:9:08a7c0401b617afbb4e89a5b2843b6e0

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:312) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1231) ~[spring-context-6.1.3.jar:6.1.3]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:949) ~[spring-context-6.1.3.jar:6.1.3]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.3.jar:6.1.3]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.2.jar:3.2.2]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.2.jar:3.2.2]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.2.jar:3.2.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.2.jar:3.2.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.2.jar:3.2.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.2.jar:3.2.2]
    at com.example.twitterdemo.TwitterDemoApplication.main(TwitterDemoApplication.java:10) ~[classes/:na]
Caused by: liquibase.exception.CommandExecutionException: liquibase.exception.ValidationFailedException: 验证失败:
     1个变更集校验和不匹配
          db/changelog/0.0.1/changelog-create-identity-schema.sql::add-user_accounts_roles-table-constrains::OrestHutovych原本为:9:8df671e96368d2e485f0166207cc5e73,现在变为:9:08a7c0401b617afbb4e89a5b2843b6e0

    at liquibase.command.CommandScope.execute(CommandScope.java:237) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Liquibase.lambda$update$0(Liquibase.java:222) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Scope.lambda$child$0(Scope.java:184) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Scope.child(Scope.java:193) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Scope.child(Scope.java:183) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Scope.child(Scope.java:162) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Liquibase.runInScope(Liquibase.java:1371) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Liquibase.update(Liquibase.java:211) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.Liquibase.update(Liquibase.java:193) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:331) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:286) ~[liquibase-core-4.24.0.jar:na]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820) ~[spring-beans-6.1.3.jar:6.1.3]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769) ~[spring-beans-6.1.3.jar:6.1.3]
    ... 18 common frames omitted
Caused by: liquibase.exception.ValidationFailedException: 验证失败:
     1个变更集校验和不匹配
          db/changelog/0.0.1/changelog-create-identity-schema.sql::add-user_accounts_roles-table-constrains::OrestHutovych原本为:9:8df671e96368d2e485f0166207cc5e73,现在变为:9:08a7c0401b617afbb4e89a5b2843b6e0

    at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:353) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.command.core.helpers.DatabaseChangelogCommandStep.run(DatabaseChangelogCommandStep.java:92) ~[liquibase-core-4.24.0.jar:na]
    at liquibase.command.CommandScope.execute(CommandScope.java:214) ~[liquibase-core-4.24.0.jar:na]
    ... 30 common frames omitted

修复步骤

1. 排查变更集文件变化

先检查db/changelog/0.0.1/changelog-create-identity-schema.sql文件:

  • 查看是否有换行符格式变化(Windows的CRLF和Linux的LF会导致校验和不同)
  • 检查是否有空格、注释的增减
  • 确认SQL语句是否被修改

2. 合理修改后的校验和更新

如果文件修改是有意且合理的,用以下方式更新校验和:

  • 直接修改数据库:找到数据库中的databasechangelog表,定位到对应变更集的记录,将MD5SUM字段的值改为新的校验和9:08a7c0401b617afbb4e89a5b2843b6e0
  • 使用Liquibase命令:在项目根目录执行命令:
liquibase clearCheckSums

重启项目后,Liquibase会自动重新计算并更新数据库中的校验和。

3. 误修改的回滚处理

如果文件是被误修改,直接恢复到之前的版本,重启项目即可,校验和会自动匹配。

4. 测试环境临时跳过校验(不推荐生产使用)

开发测试环境中,若想快速跳过验证,可在配置文件中添加:

  • properties格式:
spring.liquibase.validation-mode=none
  • yml格式:
spring:
  liquibase:
    validation-mode: none

注意:生产环境禁止使用此配置,会破坏数据库变更的一致性校验机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:12:02