9

对于 Postgres 的 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' 目录,它对每个人都是 CHOWN 的。我已经使用 Homebrew 完全删除并重新安装 Postgres,但我仍然遇到同样的问题。

4

6 回答 6

33

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

于 2014-06-12T08:57:51.920 回答
14

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

于 2013-11-27T20:27:28.237 回答
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
于 2013-07-10T02:25:55.617 回答
2

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

  1. 须藤编辑/etc/paths
  2. 将包含的行移动/usr/local/bin到文件的顶部。(之前/usr/bin
  3. 卸载你的 postgres gem(s) ( gem uninstall pg)
  4. 启动新的 shell 以加载新的环境设置
  5. bundle
于 2013-11-11T03:29:22.133 回答
1

这不是 OS X 特定的问题。您将需要清理您的 postgres 安装,然后重新安装它。我在 ubuntu 12.04 上遇到过这个问题。在清理之前的安装时,您需要删除所有以 postgres 开头的软件包(postgresql、postgresql-common、postgresql-client 等),换句话说,就是 postgres*。我没有使用过 brew,在 OS X Lion 上使用过端口。我想等效的命令应该是sudo brew remove postgres*. 然后 sudo brew install 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 如果是,那么这个问题可能是重复。

于 2013-06-21T17:03:27.380 回答
0

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

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

于 2017-03-24T03:20:16.770 回答