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完全冻结,由于一个无关的问题,我不得不使用电源button进行硬重启。 重新启动后,我无法启动Postgres,因为这个错误。

警告: 如果你删除了postmaster.pid而没有确定没有运行你的postgres进程,可能永久破坏你的数据库 。 (如果postmaster退出,PostgreSQL应该自动删除它)。

解决scheme:这解决了这个问题 – 我删除了这个文件,然后一切正常!

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

这里是我怎么弄清楚为什么这个需要删除。

  1. 我使用下面的命令来查看是否有任何PG进程正在运行。 对我来说没有,我什至不能启动PG服务器:

     ps auxw | grep post 
  2. 我search了上面错误消息中的文件.PGSQL.5432。 我用了下面的命令:

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

    这并没有显示任何东西后search我的整个计算机,所以文件不存在,但显然psql “想要它”或“认为它在那里”。

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

     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". 
  4. 根据错误消息中的build议,我删除了与server.log相同的目录中的postmaster.pid文件。 这解决了这个问题,我能够重新启动。

所以,似乎我的MacBook冻结和硬重新启动导致Postgres认为它的进程仍然运行,即使重新启动。 删除这个文件解决。 希望这可以帮助别人! 很多人有类似的问题,但大多数答案都与文件权限有关,而在我的情况是不同的。

如果你通过自制程序安装比使用下面的命令

 brew services stop postgresql brew services start postgresql 

如果您的ubuntu下面的命令将工作通过运行只需重新启动服务器

 $sudo service postgresql restart 

要么

 sudo /etc/init.d/postgresql restart 

你好,世界 :)
对我来说,最好但奇怪的做法是做下一件事。

1)下载postgres93.app或其他版本。 将此应用程序添加到/ Applications /文件夹。

2)将一行(命令添加到文件.bash_profile (位于我的主目录中):

  export PATH = / Applications / Postgres93.app / Contents / MacOS / bin /:$ PATH 

这是来自Postgres93.app psql的path。 每次启动控制台时,该行(命令)都会运行。

3)/Applications/文件夹启动Postgres93.app 。 它启动一个本地服务器(端口是“5432”,主机是“localhost”)。

4)所有这些操作后,我很高兴运行$ createuser -SRDP user_name和其他命令,并看到它的工作! Postgres93.app可以在每次系统启动时运行。

5)另外,如果你想看到你的数据库graphics你应该安装PG Commander.app 。 将postgres数据库视为漂亮的数据表是一种很好的方法

当然,这只对本地服务器有帮助。 如果这个指示帮助那些面对这个问题的人,我会很高兴。

这个问题有很多来源,因此有很多答案。 我经历过每一个。

1)如果你有某种types的崩溃,可能需要删除/usr/local/var/postgres/postmaster.pid文件,因为postgres可能没有正确处理它。 但确保没有进程正在运行。

2)Craig Ringer在其他文章中指出,苹果捆绑postgreSQL会导致pg gem安装问题设置PATH环境variables是一个解决scheme。

3)另一个解决scheme,是卸载并重新安装gem。 酿造更新可能也是必要的。

如果你偶然发现这个post,如果你能找出其中一个来源,你将节省时间…

我在这里遇到类似的问题,我解决了这个问题如下。

其实postgres进程已经死了,查看postgres的状态运行下面的命令

 sudo /etc/init.d/postgres status 

它会说这个过程已经死了,只是开始这个​​过程

 sudo /etc/init.d/postgres start 

我的问题最终是因为我正在使用防毒面具(Mac的主机文件pipe理器),而我没有在我使用的主机文件中的本地主机条目。

我补充说:

 127.0.0.1 localhost 

这解决了我的问题。

对我来说,解决scheme只是重新启动我的电脑。 我首先尝试使用Brew服务重新启动,当没有工作时,重新启动似乎是在查看一些更复杂的解决scheme之前尝试的下一个最佳选项。 一切工作,因为它应该在之后。

以上都没有为我工作。 我不得不按照以下方式重新安装Postgres:

  • brew uninstall postgresqlbrew uninstall postgresql
  • brew doctor (修理这里的任何东西)
  • brew prune
  • 删除所有Postgres文件夹:

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • 使用brew重新安装postgresql: brew install postgresql

  • 启动服务器: brew services start postgresql
  • 你现在应该创build你的数据库…( createdb

我不得不多次查看这个post来解决这个问题。 还有另一个修复程序,这也适用于与其他正在运行的程序类似的问题。

我刚刚发现你可以使用以下两个命令。

$顶部

这将显示所有正在运行的操作与他们的PID号码。 当你findpostgres和相关的pid

$ kill pid_number

我刚刚得到同样的问题,因为我已经把我的机器( ubuntu )更新,并得到以下错误:

无法连接到服务器:没有这样的文件或目录服务器在本地运行,并在Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”接受连接?

完成更新过程后,我重新启动我的系统错误消失了。 它的工作就像以前一样魅力。我想这是发生在PG正在更新,另一个进程开始。

SUPER NEWBIE ALERT:我只是学习web开发和我正在跟随的特定教程提到我必须安装Postgres,但实际上并没有提到我必须运行它…一旦我打开Postgres应用程序一切都很好,花花公子。

@Jagdish Barabari的回答给了我需要解决这个问题的线索。 原来有两个版本的postgresql安装,只有一个正在运行。 清除所有postgresql文件并重新安装最新版本为我解决了这个问题。

这发生在我的Mac(高山)冻结后,我不得不手动重新启动(按住电源button)。 我所需要做的就是彻底重启。