git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

今天有同事在Gitlab上发送 Merge Request的时候,直接出现如下所示的界面,提示http 500,服务器内部出错。

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

一、错误描述

1.1 创建新的 Merge Request

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

1.2 填写 Merge Request 相关信息

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

1.3 发送 Merge Request ,出现500错误

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

1.4 登录管理员账户,在【Admin Area】–>【Monitoring】–>【Logs】–>【production.log】里面,搜索到错误信息如下所示:

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

错误描述部分信息如下:


Started POST "/ouyangpeng/Git_Test/merge_requests" for 172.28.10.196 at 2017-08-12 17:11:40 +0800 Processing by Projects::MergeRequests::CreationsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"GMvnXQk+gX5kdc0aQbuz0SSux4GjTuXk5IB+H6/yulW9uXljBSm0Vn8VcFWTE37eMSFCZMMwviuEF4irAFqD2Q==", "merge_request"=>{"title"=>"test user.name", "description"=>"merge from feature/test1 to develop", "assignee_id"=>"2", "label_ids"=>[""], "force_remove_source_branch"=>"0", "lock_version"=>"", "source_project_id"=>"40", "source_branch"=>"feature/test1", "target_project_id"=>"40", "target_branch"=>"develop"}, "namespace_id"=>"ouyangpeng", "project_id"=>"Git_Test"} Completed 500 Internal Server Error in 65ms (ActiveRecord: 9.4ms) ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "binary" of relation "merge_request_diff_files" does not exist LINE 1: ...le", "renamed_file", "deleted_file", "too_large", "binary", ... ^ : INSERT INTO merge_request_diff_files ("diff", "new_path", "old_path", "a_mode", "b_mode", "new_file", "renamed_file", "deleted_file", "too_large", "binary", "merge_request_diff_id", "relative_order") VALUES ('--- /dev/null

提示 binary 这个字段在关系表 merge_request_diff_files 中不存在。

ActiveRecord::StatementInvalid (PG::UndefinedColumn: ERROR: column "binary" of relation "merge_request_diff_files" does not exist

ps: 也可以在Gitlab部署的那台服务器上,运行下面的命令,查看Gitlab的运行日志

sudo gitlab-ctl tail

但是明明一个礼拜之前,我都测试了两次merge request 都是正常的,怎么突然就出现500了呢?

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

经过一个下午的排查,尝试过去修改Gitlab的数据库等都失败,最后发现那几次成功的发送merge request 是在gitlab 9.2.2的时候处理的。

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

但是现在Gitlab的版本是9.4.3

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

话说我也不记得是什么原因导致我去升级的。我也不记得当时我是如何升级Gitlab版本的了,然后就出现了现在的发送merge request 就出现http 500的返回码,表示服务器内部出错。

心中出现一万匹*,这个该如何解决呢??

二、解决问题

在服务器上运行下面几条命令就成功解决了该问题

2.1 gitlab-rake gitlab:env:info

# 检查环境和配置是否正确
gitlab-rake gitlab:env:info

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

2.2 gitlab-rake gitlab:check

#检查,检查结果会告诉你如何纠正错误。
gitlab-rake gitlab:check

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

2.3 gitlab-rake db:migrate

 #迁移完db后需要执行此步骤。
gitlab-rake db:migrate

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

2.4 gitlab-rake cache:clear

#清除缓存
# gitlab-rake cache:clear

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

2.5 sudo gitlab-ctl reconfigure

# 应用重新配置
sudo gitlab-ctl reconfigure

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

2.6 sudo gitlab-ctl restart

# 重启 gitlab
sudo gitlab-ctl restart

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

我尝试敲完上面的命令之后,就正常了,下面我们来试一试重新发送 Merge Request

三、重新发送 Merge Request

3.1 创建新的 Merge Request

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

3.2 填写 Merge Request 相关信息,然后发送

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

3.3 收到 Merge Request 请求

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

3.4 查看Merge Request 请求相关信息

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

3.5 同意Merge Request 请求

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

3.6 Merge Request 处理完毕

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

四、总结

4.1 不要随便升级Gitlab版本

不要随便升级Gitlab版本,本来Gitlab 9.2.2运行的好好的,不知道那天突然自己发疯去升级Gitlab版本为9.4.3。Gitlab版本发布太快了,哪个版本运行稳定不要随便升级。

下面是从Gitlab 9.0.0 到 Gitlab 9.4.4的发布时间截图。

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

4.2 升级Gitlab版本请按官网教程来

2、如果要升级的话,一定要安装官方的教程来一步一步升级,我现在都记不得我是如何从9.2.2 升级到9.4.3的,尴尬。

https://about.gitlab.com/2017/08/10/gitlab-9-dot-4-dot-4-released/

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

按如上图所示,如果要升级的话不要直接跨大版本升级,有可能遇到很多未知的bug,告诉你网上基本上没有答案解决,坑爹,我在google和百度上找了一下午都找不到满意的答案。

比如你升级的话,先从9.2.0升级到9.3.0再升级到9.4.0 不要一步就升级完。

4.3

即使真的出现问题,也别怕,可以一步一步尝试,最终还是会解决的!

参考链接


git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!

转载请保留原文地址:http://blog.****.net/ouyang_peng/article/details/77124597

如果本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。

git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

上一篇:常见的HTTP返回码如4xx, 5xx


下一篇:网络协议理论,http协议,数据结构,常用返回码