psql: 无法连接到服务器:没有这样的文件或目录(Mac OS X)
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。
以上方法都对我没用。我不得不按照以下方式重新安装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
)
警告:如果在确保没有真正运行的postgres
进程的情况下删除postmaster.pid文件,则可能会永久损坏您的数据库。(如果postmaster已退出,则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
在服务器日志的末尾,我看到了以下错误:
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文件。这解决了问题,我能够重新启动。
因此,似乎我的macbook冻结并被强制重新启动使Postgres认为其进程仍在运行,即使在重新启动后也是如此。删除这个文件解决了问题。很多人也面临类似的问题,但大多数答案都涉及文件权限,而在我的情况下情况并不相同。