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

使用Helm部署Cetic/Zabbix时数据库版本不匹配问题求助

问题描述

按照指定Helm仓库的3.1.1版本部署说明,在Kubernetes中通过Helm部署Zabbix,执行以下命令后无法访问Zabbix网页,弹出数据库版本不匹配错误:

helm repo add cetic https://cetic.github.io/helm-charts

helm repo update

helm show values cetic/zabbix > /Users/xiaojueguan/code/AMD/workplace/docs/infra/zabbix/zabbix_values.yaml

helm upgrade --install zabbix cetic/zabbix \
 --dependency-update \
 --create-namespace \
 -f /Users/xiaojueguan/code/AMD/workplace/docs/infra/zabbix/zabbix_values.yaml -n monitoring --debug

kubectl get pods -n monitoring

错误截图

错误提示:你的数据库版本:6030000。要求版本:6000000。

已尝试操作
  1. 登录PostgreSQL服务器,尝试修改dbversion表的mandatory字段为6030000,但操作失败,执行的命令如下:
k get secrets  zabbixdb-pguser-zabbix --template={{.data.password}} | base64 -D
psql -h 10.244.0.151 -U zabbix
use zabbix
update dbversion set mandatory=6030000
flush privileges

注:上述命令存在PostgreSQL语法错误,切换数据库应使用\c zabbix,且PostgreSQL无flush privileges命令。

  1. 将PostgreSQL版本从14.4更换为13.8,问题仍未解决。
补充说明

从Zabbix代码逻辑可知,数据库版本取自dbversion表,前端要求的版本由ZABBIX_DB_VERSION常量定义(值为6020000)。因无法修改代码,计划从数据库端解决问题,考虑两个方向:

  • 修改dbversion表的对应字段
  • 使用与当前Zabbix版本适配的PostgreSQL版本

相关代码逻辑:

/**
     * 检查连接的数据库版本是否与前端版本匹配。
     *
     * @return bool
     */
    public function checkDbVersion() {
        if (!$this->checkDbVersionTable()) {
            return false;
        }

        $version = DBfetch(DBselect('SELECT dv.mandatory FROM dbversion dv'));

        if ($version['mandatory'] != ZABBIX_DB_VERSION) {
            $this->setError(_s('Zabbix数据库版本不符合当前要求。你的数据库版本:%1$s。要求版本:%2$s。请联系系统管理员。',
                $version['mandatory'], ZABBIX_DB_VERSION
            ));

            return false;
        }

        return true;
    }

常量定义:

define('ZABBIX_DB_VERSION',     6020000);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:15:36