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

如何解决GitLab CE 14.1.6版本升级失败的问题

GitLab 14.1.6 升级故障解决步骤

根因说明

  • 升级中断根因:GitLab 14.x版本对主键字段做int转bigint的改造,要求所有前置批量后台迁移任务完成后才能执行后续数据库变更,升级时events表的id迁移任务仍处于运行状态,所以触发报错。
  • 手动执行命令报JSON解析错误根因:报错提示里的命令自带HTML转义符和Shell转义反斜杠,直接复制执行会导致传入rake的参数不符合JSON格式要求,触发解析失败。

操作步骤

  1. 先确认后台迁移任务状态
sudo gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.where(job_class_name: "CopyColumnUsingBackgroundMigrationJob", table_name: "events", column_name: "id").pluck(:status, :job_arguments)'

返回结果中状态为1代表任务仍在运行,若GitLab数据量较大,可先等待30分钟让任务自动完成,再执行sudo gitlab-ctl reconfigure尝试继续升级流程,无需手动执行迁移命令。

  1. 若等待后任务仍未完成,执行正确格式的手动迁移命令
sudo gitlab-rake 'gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,events,id,[["id"],["id_convert_to_bigint"]]]'

该命令用单引号包裹整个rake任务参数,避免Shell对中括号、双引号做额外转义,可解决JSON解析报错问题。

  1. 验证迁移任务状态
sudo gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.where(job_class_name: "CopyColumnUsingBackgroundMigrationJob", table_name: "events", column_name: "id").pluck(:status)'

返回结果为3代表任务已完成。

  1. 继续完成升级流程
# 重新执行GitLab配置初始化
sudo gitlab-ctl reconfigure
# 修复dpkg安装中断的报错
sudo apt install -f
  1. 验证服务状态
sudo gitlab-ctl status

确认所有进程状态为running后,访问GitLab页面验证功能正常即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:06:03