本文分享 GitLab 中文版在降級的過程中出現 500 錯誤的修復方法。
寫在前面
強烈不建議大家自行降級,如果真有降級需求,要麼自己能力過硬,要麼尋求專業服務,要不出問題很麻煩!
問題復現過程
我之前自行安裝了一個極狐GitLab 私有化部署例項,版本升級到了 17.5.1,由於想嘗試一下降級的過程,所以就想降級到 17.0.0 試一下。按照文章 GitLab 如何降級安裝中的步驟,降級是成功了,但是訪問例項的時候提示 500 錯誤:
正好介面上提示了 Request ID,拿著 ID 在 gitlab log 目錄下搜尋了一下:
提示的錯誤是 Relation has no current order and table has no primary key to be used as default order
。
解決思路
查了一下,大機率是與資料庫有關。然後猜測可能是下降的版本也跨版本了,導致資料結構有問題。為了驗證猜想,我查了一下,如果從 17.0.0 升級到 17.5.1 的路徑。
我在瀏覽器中開啟了 https://gitlab.cn/support/toolbox/upgrade-path 然後,在 current 中選擇 17.0.0,target 是 17.5.1,查詢了升級路徑:
原來,17.0.0 升級到 17.5.1 還不能直接升級,必須先升級到 17.3.6,再升級到 17.5.1。那對於降級應該也是一樣了,應該先從 17.5.1 降級到 17.3.6,再降級到 17.0.0。
在按照降級路徑之後,最後 500 錯誤消失,例項訪問正常。
總結
透過這次嘗試,我得出了以下幾點:
- GitLab 不管是升級還是降級,一定要做好準備工作,比如備份資料(要確保降級之後的版本,在之前也做了資料備份)
- 升級、降級都要遵循一定的路徑,這個路徑一定要清晰,路徑的檢視可以在極狐GitLab 官網升級路徑檢視 https://gitlab.cn/support/toolbox/upgrade-path 中獲取
- 一定要對升降級過程中遇到的問題有心理準備,遇到問題的可能性比較大(如果自己的 GitLab 瞭解不深入的情況下)
- 如果是企業內部的平臺,在自己沒有把握的前提下,不要隨意升級、降級,最好把這些交給專業的人員,因為 GitLab 是個工具,不是目的。這時候可以考慮尋求官方的技術服務支援!