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也已自启动成功。

相关推荐
夏炳辉.1 天前
Rocky Linux 8 从零安装 psql(PostgreSQL 客户端)
linux·运维·postgresql
苏三福1 天前
ubuntu 在文件管理系统中用sftp打开远程文件空白的问题解决
linux·运维·ubuntu
Anesthesia丶1 天前
llama-server编译部署+opencode验证记录(Ubuntu, GPU)
ubuntu·opencode·llama-server·qwen3.8-9b
像风一样自由20201 天前
17.Milvus如何完成一次向量相似度检索
人工智能·postgresql·大模型·milvus·rag·智能体
Sunqk56651 天前
将开发板串口连接到Ubuntu后未找到对应的设备文件?
linux·运维·ubuntu
YHHLAI1 天前
TypeScript 面试题:type 与 interface 的区别与相同点
java·ubuntu·typescript
像风一样自由20201 天前
19.Milvus数据分片扩展与高并发设计
postgresql·大模型·milvus·rag·智能体
l1t3 天前
DeepSeek总结的修复pgrust v0.2 #83:generate_series 聚合及其底层的两个成本 - #84
数据库·postgresql
2601_962181963 天前
数据库之PostgreSQL详解
数据库·postgresql
pnoker3 天前
IoT DC3 时序存储选型:四款数据库可插拔
数据库·物联网·postgresql·时序数据库·influxdb·tdengine·iotdb