psql: 无法连接到服务器:没有这样的文件或目录(Mac OS X)

69 浏览
0 Comments

psql: 无法连接到服务器:没有这样的文件或目录(Mac OS X)

重新启动我的 Mac 时,我遇到了可怕的 Postgres 错误:

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"?

这种情况发生的原因是因为我使用 MacBook 时由于不相关的问题导致它完全冻结了,我不得不使用电源按钮进行硬重启。重启后,由于这个错误,我无法启动 Postgres。

admin 更改状态以发布 2023年5月22日
0
0 Comments

以上方法都对我没用。我不得不按照以下方式重新安装Postgres:

  • 用Homebrew卸载postgresql:brew uninstall postgresql

  • brew doctor (修复出现的任何问题)

  • brew cleanup

  • 删除所有Postgres文件夹:

  • rm -r /usr/local/var/postgres

  • rm -r ~/Library/Application\ Support/Postgres

  • 用Homebrew重新安装postgresql:brew install postgresql

  • 启动服务器:brew services start postgresql

  • 现在您需要创建您的数据库...(createdb

0
0 Comments

警告:如果在确保没有真正运行的postgres进程的情况下删除postmaster.pid文件,则可能会永久损坏您的数据库。(如果postmaster已退出,则PostgreSQL应自动删除它。)

解决方法:我删除了这个文件,然后问题得到了解决!

/usr/local/var/postgres/postmaster.pid

--

以下是我弄清楚为什么需要删除这个文件的方法。

  1. 我使用以下命令查看是否有任何PG进程正在运行。对我来说没有,我甚至无法启动PG服务器:

    ps auxw | grep post
    

  2. 我搜索上面错误消息中出现的文件.s.PGSQL.5432。我使用以下命令:

    sudo find / -name .s.PGSQL.5432 -ls
    

在搜索整个计算机后,这并没有显示出任何东西,因此该文件不存在,但是显然psql“想要它”或“认为它存在”。

  1. 我查看了我的服务器日志,看到了以下错误:

    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".

  1. 按照错误消息中的建议,我删除了与server.log文件处于同一目录中的postmaster.pid文件。这解决了问题,我能够重新启动。

因此,似乎我的macbook冻结并被强制重新启动使Postgres认为其进程仍在运行,即使在重新启动后也是如此。删除这个文件解决了问题。很多人也面临类似的问题,但大多数答案都涉及文件权限,而在我的情况下情况并不相同。

0