问题描述
重新启动 Mac 时,出现了可怕的 Postgres 错误
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directoryIs the server running locally and accepting connections on that socket?

发生这种情况的原因是,由于一个不相关的问题,我的 Macbook 完全冻结了,我不得不使用电源按钮进行强制重启.重新启动后,由于此错误,我无法启动Postgres.
推荐答案
警告:如果在不确保确实没有 postgres 进程在运行的情况下删除 postmaster.pid,可能会永久破坏数据库(如果邮局主管已经退出,PostgreSQL 应该自动将其删除.)
sudo rm -rf /usr/local/var/postgres/postmaster.pid
删除了此文件,然后一切正常,这就是我弄清楚为什么需要删除它的方式.
排查问题
我使用以下命令查看是否正在运行任何PG进程.对我而言,没有,我什至无法启动PG服务器:
ps auxw | grep post
我搜索了上面错误消息中的文件.s.PGSQL.5432.我使用了以下命令:
sudo find / -name .s.PGSQL.5432 -ls
在搜索我的整个计算机后,该文件未显示任何内容,因此该文件不存在,但是显然psql希望它”或认为它在那里”.
我查看了我的服务器日志,并看到以下错误:
cat /usr/local/var/postgres/server.log
在服务器日志末尾,我看到以下错误:
FATAL: pre-existing shared memory block (key 5432001, ID 65538) is still in use
HINT: If you’re sure there are no old server processes still running, remove the shared memory block or just delete the file “postmaster.pid”.
按照错误消息中的建议,我删除了与server.log相同目录中的postmaster.pid文件.这样就解决了问题,我得以重新启动.
Following the advice in the error message, I deleted the postmaster.pid file in the same directory as server.log. This resolved the issue and I was able to restart.
因此,似乎我的Macbook死机并被重新引导后,使Postgres认为它的进程即使在重新引导后仍在运行.解决了删除该文件的问题.希望这对其他人有帮助!很多人都有类似的问题,但大多数答案与文件权限有关,而在我看来,情况却有所不同.
