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

H2迁移至PostgreSQL后Gerrit启动失败,提示不支持Schema版本降级

解决Gerrit启动报错Unsupported schema version的问题

问题核心分析

你的错误日志里的关键致命报错是:

Unsupported schema version 161; expected schema version 129. Downgrade is not supported.

虽然你声明两台Gerrit都是2.13.11,但这个报错直接说明数据库schema版本和当前Gerrit二进制要求的版本不匹配——129是Gerrit 2.13.x系列对应的标准schema版本,而161是Gerrit 3.0+更高版本的schema号。大概率是你的旧H2数据库所在的Gerrit实例,之前被误升级过(比如有人悄悄替换了Gerrit二进制但没同步信息),导致schema被强制升到了161,而你新部署的是真正的2.13.11,触发了Gerrit禁止schema降级的硬性校验规则。

具体解决步骤

  • 第一步:先确认旧Gerrit实例的真实版本
    登录旧服务器,直接用旧实例本地的Gerrit二进制执行版本检查,不要只看配置文件:

    cd /path/to/old/gerrit/bin
    ./gerrit version
    

    如果输出的版本不是2.13.11(比如显示3.0+),那问题根源就找到了——你需要把新实例升级到和旧实例完全一致的版本,Gerrit官方明确不支持schema降级,这是不可突破的限制。

  • 第二步:如果旧实例确实是2.13.11
    那大概率是迁移过程中误用了高版本的Gerrit命令操作数据,导致schema被意外升级。这时候需要回滚重新操作:

    1. 回滚新的PostgreSQL数据库到迁移前的干净初始状态
    2. 用旧实例本地的2.13.11版本Gerrit二进制执行数据导出:
      ./gerrit dump --output=gerrit_data_backup.zip
      
    3. 将导出的压缩包传到新服务器,用新实例本地的2.13.11版本Gerrit二进制执行导入:
      ./gerrit restore --input=gerrit_data_backup.zip
      
    4. 最后用新实例的2.13.11版本命令执行reindex:
      ./gerrit reindex
      
  • 额外检查项

    1. 校验两台服务器的Gerrit二进制文件哈希值,确保完全一致,避免下载的安装包损坏或被替换:
      sha256sum /path/to/gerrit/bin/gerrit.war
      
    2. 日志里的gitweb not installed警告可以直接忽略,这只是可选UI组件缺失,不影响Gerrit核心服务启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:15:01