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

Postgresql Mac OSX Lion Postgres不接受/tmp/.s.PGSQL.5432上的连接,postgresql,osx-lion,homebrew,Postgresql,Osx Lion,Homebrew,我在Postgres的自制安装中遇到了一个常见的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

我在Postgres的自制安装中遇到了一个常见的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
看来博士后正在运行

我已经在postgresql.conf的以下几行中发表了评论

port = 5432
unix_socket_directory = '/var/pgsql_socket'
unix_socket_permissions = 0777
在var/pgsql_socket/I中有一个隐藏文件.s.pgsql.5432

我在这里尝试了很多解决方案。这个看起来特别相似:


但不同的是,我确实有一个“/var/pgsql_socket”目录,每个人都可以使用它。我使用自制软件完全删除并重新安装Postgres,但仍然存在同样的问题。

这不是特定于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服务器

编辑:看起来下面的链接可能会有所帮助
如果是,那么这个问题可能是重复的。

一个更简单的解决方案是定位套接字的实际位置和预期位置。就我而言,我跑:

$ 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

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

  • sudo edit
    /etc/path
  • 将包含
    /usr/local/bin
    的行移到文件顶部。(在
    /usr/bin
    之前)
  • 卸载您的postgres gem(
    gem卸载页面
  • 启动新shell以加载新的环境设置
  • bundle

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

    您需要删除postmaster.pid,它应该位于以下路径中:
    /usr/local/var/postgres/postmaster.pid
    我在Mac Serria上也遇到了同样的问题。在Mac Serria中,如果您使用的是GUI安装程序而不是自制软件,则可以在
    /Users//Library/Application Support/Postgres/var-9.6
    中找到postmaster.pid


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

    输出显示postgres未运行。有关运行时的示例输出,请参阅。您的第一步是使用自制指令实际启动服务器。您的描述混淆了
    /var/postgresql
    /var/pgsql\u socket
    。感谢您的帮助,如果我的描述有点混淆,请道歉。我运行了pg\u ctl-D/usr/local/var/postgres-l/usr/local/var/postgres/server.log start并获得了消息“服务器启动”,然后ps auxw | grep post返回许多进程。但是当我尝试创建数据库时,我得到了相同的套接字错误。一个提醒,createdb应该作为postgres用户运行。你用过sudo-u postgres createdb吗?不过,这可能与套接字问题无关。谢谢。我遵循了这个建议,特别是SO链接中的建议,并修改了我最初的帖子。不幸的是,我仍然有这个问题。