Mac OSX Lion Postgres不接受/tmp/.s.PGSQL.5432上的连接

时间:2013-06-21 16:54:46

标签: postgresql osx-lion homebrew

我在Postbres的Homebrew安装中遇到常见的Mac OSX错误,

No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

这显然是由于系统上有多个安装。但是,通常的步骤并不能解决问题。

我可以成功启动Postgres并运行:

ps auxw | grep post

返回..

euanmillar       847   0.0  0.0  2432768    588 s000  R+   11:19am   0:00.00 grep postgres
euanmillar       845   0.0  0.0  2439324    448   ??  Ss   11:19am   0:00.00 postgres:
stats collector process
euanmillar       844   0.0  0.0  2443176   1520   ??  Ss   11:19am   0:00.00 postgres:
autovacuum launcher process
euanmillar       843   0.0  0.0  2443044    544   ??  Ss   11:19am   0:00.00 postgres: wal writer process
euanmillar       842   0.0  0.0  2443044    584   ??  Ss   11:19am   0:00.00 postgres: writer process
euanmillar       841   0.0  0.0  2443044    596   ??  Ss   11:19am   0:00.00 postgres: checkpointer process
euanmillar       839   0.0  0.0  2443044   3616 s000  S    11:19am   0:00.02 /us

所以看起来像postgres正在运行。

我在postgresql.conf中注释了以下几行

port = 5432
unix_socket_directory = '/var/pgsql_socket'
unix_socket_permissions = 0777

并在var / pgsql_socket /我有一个隐藏文件.s.PGSQL.5432

我在这里尝试了许多帖子的解决方案。这一点特别相似:

https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why

但不同之处在于我确实有一个'/ var / pgsql_socket'目录,这个目录对每个人都有。我使用Homebrew完全删除并重新安装Postgres,但我仍有同样的问题。

6 个答案:

答案 0 :(得分:31)

您需要删除postmaster.pid,它应位于以下路径中: /usr/local/var/postgres/postmaster.pid

答案 1 :(得分:14)

对我来说,我删除了/usr/local/var/postgres中的postmaster.pid。把我弄好了。

答案 2 :(得分:9)

更简单的解决方案是找到套接字实际所在的位置与预期的位置。就我而言,我跑了:

$ locate PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432.lock

然后将预期的套接字位置符号链接到实际的套接字位置。

$ ln -s /private/var/pgsql_socket/.s.PGSQL.5432 /tmp/.s.PGSQL.5432

答案 3 :(得分:2)

正在使用系统客户端,而不是您的brew版本。符号链接方法仅持续到下次重新启动。这种方法解决了我认为的根本问题

  1. sudo edit /etc/paths
  2. 将包含/usr/local/bin的行移至文件顶部。 (在/usr/bin之前)
  3. 卸载您的postgres gem(s {(1}})
  4. 启动新shell以加载新的环境设置
  5. gem uninstall pg

答案 4 :(得分:1)

这不是OS X特定问题。您需要清理postgres安装,然后重新安装。我在ubuntu 12.04上遇到过这个问题。在清理以前的安装时,您需要删除以postgres开头的所有软件包(postgresql,postgresql-common,postgresql-client等),换句话说,postgres *。我没有用过brew,在OS X Lion上使用了端口。我想等效命令应该是sudo brew remove postgres*。然后sudo brew安装postgresql就可以了。

此外,如果您认为服务器已在运行,则可以尝试sudo -u postgres createuser。如果失败,则需要重新安装。

但是,ps aux | grep post的输出实际上是grep命令本身。不是postgres服务器运行。

编辑:看起来以下链接可能会有所帮助https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why 如果是,那么这个问题可能是重复的。

答案 5 :(得分:0)

我在Mac Serria遇到了同样的问题。在Mac Serria中,如果您使用GUI安装程序而不是自制程序,则可以在/Users/<user_name>/Library/Application Support/Postgres/var-9.6内找到postmaster.pid。

删除此文件后,一切都应该正常。