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

Chef Frontend从12.17.33升级至14.5.29时upgrade命令报错咨询

Chef Frontend 12.17.33 升级至 14.5.29 报错排查方案

错误说明

你遇到的execute[oc_id_schema]执行失败报错是因为Chef将数据库schema相关操作标记为敏感资源,默认隐藏了具体错误输出,需要先开启详细日志定位根因。

排查&解决步骤

1. 复现报错获取详细日志

执行带debug日志级别的升级命令,输出完整错误信息:

CHEF_LICENSE='accept' chef-server-ctl upgrade -l debug

2. 常见根因及对应修复方法

  • 数据库服务未启动:执行chef-server-ctl stop会关停所有Chef服务,但升级过程需要postgresql数据库服务处于运行状态才能执行schema迁移。修复步骤:
    1. 单独启动postgresql服务:chef-server-ctl start postgresql
    2. 确认服务状态正常:chef-server-ctl status postgresql
    3. 重新执行升级命令
  • 跨大版本schema迁移冲突:12.x到14.x跨两个大版本,oc_id的数据库schema迭代存在断层,直接升级会触发迁移脚本兼容问题。修复步骤:
    1. 先全量备份Chef数据避免数据丢失:chef-server-ctl backup --all
    2. 手动触发oc_id服务重配置执行增量迁移:chef-server-ctl reconfigure oc_id
    3. 若仍报错可进入oc_id数据库查询当前schema版本,对照迁移脚本补全缺失项:
      # 进入oc_id数据库
      chef-server-ctl psql oc_id
      # 查询当前已执行的schema迁移版本
      SELECT * FROM schema_migrations;
      
      迁移脚本默认存放路径为/opt/opscode/embedded/service/oc_id/db/migrate
  • 自定义数据目录权限异常:从报错信息可见你的Chef可执行文件存放于自定义路径/data/opscode,需确认opscode用户对该目录及所有子目录有完整读写权限:
    chown -R opscode:opscode /data/opscode
    
  • 许可接收不生效:部分场景下环境变量传参的许可接收方式不生效,可提前执行命令接收许可后再升级:
    chef-server-ctl accept-license
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:12:01