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

JHipster新增ROLE_CLIENT权限重启后报Liquibase校验和错误如何解决

问题原因

你直接修改了已经在数据库中执行过的Liquibase初始变更集config/liquibase/changelog/00000000000000_initial_schema.xml中的内容(大概率是直接在该文件内添加了插入ROLE_CLIENT权限的语句)。Liquibase会对所有已执行的变更集生成唯一校验和存入数据库,一旦变更集内容被修改,校验和就会不匹配,触发校验失败报错。

解决方案

推荐标准方案(适合所有环境)

该方案符合Liquibase版本控制规范,不会影响线上环境运行:

  • 回退你对00000000000000_initial_schema.xml文件的所有修改,恢复为原始内容,先还原校验和匹配逻辑。
  • 在config/liquibase/changelog目录下新建独立的变更集文件,例如命名为2024xxxx_add_role_client.xml,写入新增权限的逻辑,示例内容如下:
<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">

    <changeSet id="2024000001" author="your-name">
        <insert tableName="jhi_authority">
            <column name="name" value="ROLE_CLIENT"/>
        </insert>
    </changeSet>
</databaseChangeLog>
  • 打开config/liquibase/master.xml文件,在原有变更集引用的末尾添加你新建的变更集文件引用。
  • 重启项目,Liquibase会自动执行新的变更集插入权限,不会再出现校验错误。

临时兼容方案(仅适合本地开发环境)

如果你不需要保留变更历史,仅想快速解决本地启动问题:

  • 打开开发环境配置文件application-dev.yml,在liquibase配置项下添加clear-checksums: true配置。
  • 重启项目一次,Liquibase会清空数据库中存储的所有历史校验和,重新计算当前所有变更集的校验和存入数据库,校验错误会消失。
  • 项目启动成功后,务必删除clear-checksums: true配置,避免后续每次启动都重复计算校验和。
微服务JWT架构额外注意事项
  • 新增的ROLE_CLIENT权限需要同步在网关层的权限校验规则中添加,避免网关拦截携带该权限的用户请求。
  • 同步更新前后端的权限判断逻辑,确保ROLE_CLIENT权限的校验规则生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 00:51:02