升级/降级后Gitlab CE 500错误

Gitlab CE 500 error after upgrade / downgrade

我有一个 Gitlab CE 服务器版本 13.10,在系统更新到版本 14.8 时发现它被错误地更新了。

使用这些版本,所有页面都会出现 500 错误。

所以我降级到版本 13.10.5 并且我能够再次使用我的 Gitlab 服务器。

然而,想要创建一个新组我又遇到了 500 错误:

Started GET "/groups/new" for 62.34.67.75 at 2022-04-19 17:23:00 +0200
Processing by GroupsController#new as HTML
Completed 500 Internal Server Error in 78ms (ActiveRecord: 4.2ms | Elasticsearch: 0.0ms | Allocations: 27029)
  
ActionView::Template::Error (PG::UndefinedTable: ERROR:  relation "services" does not exist
LINE 8:  WHERE a.attrelid = '"services"'::regclass

显然这个错误似乎与数据库有关。

我尝试通过安装版本 13.11.7 来升级一个版本,但所有页面再次导致 500 错误,错误与上述相同。

如有任何帮助,我们将不胜感激。

更新 在 Google 中搜索后,似乎 integrations table 已重命名为 serviceshttps://gitlab.com/gitlab-org/gitlab/-/blob/master/db/post_migrate/20210621223242_finalize_rename_services_to_integrations.rb

查看我服务器上的数据库模式后,integrations 仍然存在。

所以好像数据库还在超前版本,数据库降级不行。

我通过使用 gitlab-psql 执行此查询来解决此错误:

ALTER TABLE Integrations RENAME TO Services;

Integrations table 重命名为 services 问题就消失了。

您不能从 13.10 直接更新到 14.8,否则您将错过某些数据库迁移。如果您跳过 upgrade path.

中的版本,您可能会发现 GitLab 的更多功能将以意想不到的方式被破坏

您必须遵循 upgrade path。在您的情况下,您应该先升级到 13.12.15,然后升级到 14.0.12,然后再升级到 14.x.y(例如 14.8)。在进入下一个版本之前,还要确保完成所有后台迁移并注意特定于版本的说明(尤其是 in 14.0)。

您遇到的问题可能可以通过 运行 手动操作数据库来解决,但不推荐这样做。最好的选择是遵循升级路径以确保所有迁移正确并按正确的顺序进行。