我有一个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错误,与上面的错误相同。
任何帮助都将是感激的。
在谷歌搜索后,似乎integrations
表被重命名为services
: https://gitlab.com/gitlab-org/gitlab/-/blob/master/db/post_migrate/20210621223242_finalize_rename_services_to_integrations.rb
查看服务器上的数据库模式后,integrations
仍然存在。
所以这就像数据库仍然在前面的版本和数据库降级不ok。
我通过使用gitlab-psql
来执行这个查询来解决这个错误:
ALTER TABLE Integrations RENAME TO Services;
将Integrations
重命名为services
,问题就解决了。
不能直接从13.10更新到14.8,否则将错过某些数据库迁移。如果在升级路径中跳过版本,您可能会发现GitLab的许多功能将以意想不到的方式被破坏。
必须按照升级路径执行。这意味着在您的情况下,您应该先升级到13.12.15
,然后升级到14.0.12
,然后升级到14.x.y
(例如14.8)。另外,在迁移到下一个版本之前,请确保完成所有后台迁移,并注意版本特定的注释(特别是在14.0中)。
您遇到的问题可以通过手动运行数据库操作来修复,但不建议这样做。最好的选择是遵循升级路径,以确保所有迁移都以正确的顺序正确地进行。