问题现象

最近两个月碰到三次,莫名的 PG (PostgreSQL) 无法连接的情况,具体错误信息如下:

psql: could not connect to server: No such file or directory
 Is the server running locally and accepting
 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

前两次,自己瞎鼓捣,后面就好了,然后也没在意。然后今天早上 Mac 死机重启后,这个问题又出现了,然后各种重装 PG, 重启系统依然无解。

解决方案

无奈之下,开始老实地去 Google, 最后找到一篇 SO 的文章,彻底解决了问题。问题的原因是 Mac 突然死机时原来的进程没有正常关闭,重启后又被启动了。当再次启动 PG 时,PID 文件就无法正常工作了,因为记录的是系统死机前的进程信息。

这些信息都在 PG 的日志文件里看到,/usr/local/var/postgres 目录里面,有一个 server.log 文件可以看到所有的日志。

在我的日志里面看到有很多行

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 403) running in data directory "/usr/local/var/postgres"?

这行日志就告诉我们 postmaster.pid 已经存在,这就是之前死机前留下的。将此文件删除,问题就可以解决了,但是删除此文件前要确保 postgres 进程不在运行,所以我还是选择将此文件重命名。

最后,PG 终于启动了。

参考


springwq
112 声望4 粉丝

Ruby on Rails 程序员