惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Recent Announcements
Recent Announcements
B
Blog
D
Docker
V
V2EX
GbyAI
GbyAI
L
LangChain Blog
博客园 - Franky
U
Unit 42
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
博客园 - 【当耐特】
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Vercel News
Vercel News
博客园_首页
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
量子位
Blog — PlanetScale
Blog — PlanetScale
罗磊的独立博客

烧饼博客

【收】溢价 60 收 Vmiss la tri - 交易 - 烧饼论坛 新人报道 - 综合 - 烧饼论坛 关于本地自建大模型想听听大佬们的意见 - 综合 - 烧饼论坛 现在 ChatGPT 哪个区的价格最划算? - AI - 烧饼论坛 无聊, 氵个帖 - 综合 - 烧饼论坛 我看用户数量还没我的 id 大 - 综合 - 烧饼论坛 突然来到了这里。新人报道 - 综合 - 烧饼论坛 新人报道哈,水下 - 综合 - 烧饼论坛 来的早才能 ID 好 - 综合 - 烧饼论坛 新人报到,初来乍到 - 综合 - 烧饼论坛 祝贺烧饼论坛开业大吉,又多了一个好去处 - 综合 - 烧饼论坛 这个社区这么火吗 🔥🔥🔥🔥我在隔壁社区都能看见有人在求邀请码 - 综合 - 烧饼论坛 2026-8-21 今日论坛词云 - 综合 - 烧饼论坛 有懂机械硬盘行情的家人吗 - 硬件 - 烧饼论坛 目前最强核显是不是 8700G? - 硬件 - 烧饼论坛 lao1.me 社区祝贺烧饼论坛开业 - 综合 - 烧饼论坛 之前注册过 wo.sb,不知道现在这个域名在谁手里 - 综合 - 烧饼论坛 大家在哪里看见这个网站的? 留念一下 - 综合 - 烧饼论坛 大家都是从哪找来的这里鸭? - 综合 - 烧饼论坛 收 hostdzire 的 LAX/SFO 三年付 - 交易 - 烧饼论坛 新人报道 - 综合 - 烧饼论坛 这论坛有力气 - 综合 - 烧饼论坛 蓝色论坛风格自定义 css - 综合 - 烧饼论坛 新人报到,这域名,有实力。😥 - 综合 - 烧饼论坛 agents ci 智能体社区祝贺烧饼论坛成立!!!!! - 综合 - 烧饼论坛 刚来,发帖测试一下 - 综合 - 烧饼论坛 sb 论坛 vip 限量开启 - 综合 - 烧饼论坛 codex 要发重置卡啦! - AI - 烧饼论坛 【油猴脚本】快来领取你的烧饼小人 - 技术 - 烧饼论坛 大佬们快多分享一些自定义 CSS 吧! - 综合 - 烧饼论坛
升级 Debian 后 GitLab PostgreSQL 无法启动的解决方法
Showfom · 2025-09-16 · via 烧饼博客
升级 Debian 后 GitLab PostgreSQL 无法启动的解决方法

本文将介绍在升级 Debian 系统后,GitLab 的 PostgreSQL 数据库无法正常启动的问题。

#背景前提

本文的 GitLab 是基于官方源安装的,具体安装和升级方法限于篇幅,不再阐述。

我们从 Debian 11 升级到 Debian 12 后,再更新 GitLab 会发现如下报错:

gitlab [execute] WARNING: database "postgres" has a collation version mismatch DETAIL: The database was created using collation version 2.31, but the operating system provides version 2.36.

或者从 Debian 12 升级到 Debian 13 后更新 GitLab 也会有如下报错:

WARNING:  database “gitlabhq_production” has a collation version mismatch
DETAIL:  The database was created using collation version 2.36, but the operating system provides version 2.41.
HINT:  Rebuild all objects in this database that use the default collation and run ALTER DATABASE gitlabhq_production REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.

我们以 Debian 13 为例,可以看到系统自带的 glibc 版本为 2.41:

# ldd --version
ldd (Debian GLIBC 2.41-12) 2.41

而 Debian 12 自带的 glibc 版本为 2.36:

# ldd --version
ldd (Debian GLIBC 2.36-9+deb12u13) 2.36

Debian 11 的 glibc 版本为 2.31:

# ldd --version
ldd (Debian GLIBC 2.31-13+deb11u13) 2.31

所以我们直接升级系统以后 GitLab 的 PostgreSQL 数据库仍使用旧版本的排序规则,导致版本不匹配,所以 GitLab 升级会失败。

#解决方法

我们以 Debian 11 升级到 Debian 12 后的情况举例,首先备份一下 GitLab:

sudo gitlab-backup create

然后我们进入 GitLab 的 PostgreSQL 控制台:

接着重新建立索引并修复 gitlabhq_production 数据库:

SET statement_timeout = 0;
REINDEX DATABASE gitlabhq_production;
ALTER DATABASE gitlabhq_production REFRESH COLLATION VERSION;

重建完成后输入 \q 并按回车退出,然后我们修复 template1postgres 数据库:

sudo gitlab-psql -d template1 -c "ALTER DATABASE template1 REFRESH COLLATION VERSION;"
sudo gitlab-psql -d postgres -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;"

修复完成后验证结果:

sudo gitlab-psql -c "
SELECT 
    datname,
    datcollversion,
    pg_collation_actual_version((SELECT oid FROM pg_collation WHERE collname = 'default')) as system_version,
    CASE 
        WHEN datcollversion = pg_collation_actual_version((SELECT oid FROM pg_collation WHERE collname = 'default')) 
        THEN '✅ Good' 
        ELSE '❌ Bad' 
    END as status
FROM pg_database 
WHERE datname IN ('template1', 'postgres', 'gitlabhq_production')
ORDER BY datname;"

如果出现如下结果,则修复完成:

       datname       | datcollversion | system_version | status  
---------------------+----------------+----------------+---------
 gitlabhq_production | 2.36           | 2.36           | ✅ Good
 postgres            | 2.36           | 2.36           | ✅ Good
 template1           | 2.36           | 2.36           | ✅ Good

然后我们就可以重新配置 GitLab 并更新升级了:

sudo gitlab-ctl reconfigure

完成以后重启 GitLab 即可恢复服务: