ubuntu22+postgresql18启动报错

ubuntu22+postgresql18启动报错

现象:首次安装postgresql18,可以正常启动和使用,也创建了数据库,一切都很好。但是服务器重启后postgresql无法自启动(已设置了systemctl enable postgresql)。

查看报错日志

bash 复制代码
> sudo tail -200f /var/log/postgresql/postgresql-18-main.log
# 错误日志如下
2025-10-23 14:52:25.643 CST [2178] LOG:  invalid value for parameter "lc_messages": "en_US.UTF-8"
2025-10-23 14:52:25.643 CST [2178] LOG:  invalid value for parameter "lc_monetary": "en_US.UTF-8"
2025-10-23 14:52:25.643 CST [2178] LOG:  invalid value for parameter "lc_numeric": "en_US.UTF-8"
2025-10-23 14:52:25.643 CST [2178] LOG:  invalid value for parameter "lc_time": "en_US.UTF-8"
2025-10-23 14:52:25.643 CST [2178] FATAL:  configuration file "/etc/postgresql/18/main/postgresql.conf" contains errors

查看系统locale

经过分析,应该是区域设置不匹配导致的。为什么第一次安装能正常使用,猜测可能是安装postgresql时临时修改了系统时区/区域为en_US.UTF-8,系统重启后又恢复默认了,没有深入考证,继续解决问题。

bash 复制代码
> sudo locale
# 内容如下
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

解决:修改区域设置

bash 复制代码
# 查看当前系统是否支持en_US.UTF-8
> locale -a
# 输出如下,发现不支持
C
C.utf8
POSIX
# 需要先生成en_US.UTF-8
> sudo locale-gen en_US.UTF-8
# 可能会报错,以下是报错信息,报错时是无法生成成功的
Generating locales (this might take a while)...
  en_US.UTF-8...bad magic value in archive header
 done
# 执行命令强制重新生成
> sudo locale-gen --purge
# 下面是成功信息
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
# 验证一下
> sudo locale -a
# 安装成功
C
C.utf8
POSIX
en_US.utf8
# 使用update-locale设置区域
> sudo update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8

重启服务器,查看设置结果

bash 复制代码
> sudo locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

至此,设置成功,postgresql也已自启动成功。

相关推荐
数智工坊2 小时前
Zotero自建Ubuntu WebDAV附件同步方案(完美解决存储空间不足)
linux·运维·ubuntu
IvorySQL4 小时前
PostgreSQL 日报 | JOIN 与外键优化(8 月 9 日)
数据库·postgresql
我是小灰灰吖5 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
MIXLLRED7 小时前
解决——Ubuntu远程桌面指令更换网络
linux·网络·ubuntu
我是小灰灰吖10 小时前
Ubuntu 22.04 + Qt 6.9.3 应用程序打包与部署完整指南
qt·ubuntu
IvorySQL10 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
切糕师学AI11 小时前
从压缩到查询:PostgreSQL中JSON数据的存储与处理实践
数据库·postgresql·json
自律懒人12 小时前
AI 沙箱逃逸 4 连发:GPT-5.6 黑进 Hugging Face、Kimi K3 抄答案,5 步给本地 Agent 装围栏
ubuntu
老王IT15 小时前
VMware虚拟机安装的ubuntu忘记用户密码怎么办
ubuntu
我是小灰灰吖15 小时前
Ubuntu22.04,OpenCV 4.5.5 环境搭建
linux·qt·ubuntu