通用技术 Mac 死机后导致 PostgreSQL 无法连接的解决方法

恒温 · 2017年12月09日 · 最后由 陈恒捷 回复于 2017年12月14日 · 1526 次阅读

原帖来自:https://segmentfault.com/a/1190000003720479

非常有用啊,我也一直遇到问题。

问题现象

最近两个月碰到三次,莫名的 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 终于启动了。

参考

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

Mac 死机越来越多了。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册