重新启动Mac时,我遇到了可怕的Postgres错误:
psql:无法连接到服务器:没有这样的文件或目录
服务器是否在本地运行并接受
Unix域套接字上的连接“/var/run/postgresql/.s.PGSQL.5432”?
发生这种情况的原因是因为我的macbook由于一个不相关的问题而完全冻结,我不得不使用电源按钮进行硬重启。重新启动后,由于此错误,我无法启动Postgres
警告:如果删除postmaster.pid而不确保确实没有运行您的postgres进程,可能会永久损坏您的数据库。(如果邮局主管已退出,PostgreSQL应自动将其删除。)
解决方案:这解决了这个问题——我删除了这个文件,然后一切都正常了
/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在服务器日志的末尾,我看到以下错误:
致命:预先存在的共享内存块(键5432001,ID 65538)仍在使用中 提示:如果您确定没有旧的服务器进程仍在运行,请删除共享内存块或删除文件“postmaster.pid”。 -
按照错误消息中的建议,我删除了与server.log位于同一目录中的postmaster.pid文件。这解决了问题,我可以重新启动
所以,似乎我的macbook冻结和硬重启导致Postgres认为即使在重启后它的进程仍在运行。已解决删除此文件的问题。希望这能帮助别人!很多人都有类似的问题,但大多数答案都与文件权限有关,而我的情况则不同