11

在我更新到山狮后,我的 postgres 不起作用。它仍在运行,但我的应用程序无法再连接到它。

$ ps aux | grep postgres
postgres         204   0.0  0.0  2446960    836   ??  Ss    7:31AM   0:00.59 postgres: stats collector process    
postgres         203   0.0  0.1  2478732   2240   ??  Ss    7:31AM   0:00.41 postgres: autovacuum launcher process    
postgres         202   0.0  0.0  2478600    584   ??  Ss    7:31AM   0:00.34 postgres: wal writer process    
postgres         201   0.0  0.0  2478600    784   ??  Ss    7:31AM   0:00.48 postgres: writer process    
postgres          95   0.0  0.0  2446960    368   ??  Ss    7:31AM   0:00.11 postgres: logger process    
postgres          64   0.0  0.2  2478600   7972   ??  Ss    7:31AM   0:00.26 /Library/PostgreSQL/9.1/bin/postmaster -D/Library/PostgreSQL/9.1/data
anezio         10205   0.0  0.0  2432768    624 s000  R+    8:01AM   0:00.00 grep postgres

我的应用程序返回此错误:

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

我仍然可以使用命令 /Library/PostgreSQL/9.1/bin/psql -U postgres 连接到 psql

似乎有些东西没有指向正确的地方

4

6 回答 6

8

我只是有同样的问题。就我个人而言,我刚刚从 Postgres 安装程序(在我的情况下为 postgresql-9.1.3-1-osx.dmg)重新安装,重新启动了我的 mac,一切都很好。ps 重新安装并没有破坏我的数据库:)

于 2012-07-27T13:39:27.233 回答
5

检查psql您正在使用哪个。我在使用 Heroku 的Postgres.app服务器时遇到了同样的问题,发现我使用的是/usr/bin/psql基于我的$PATH设置的 Apple 客户端。将您设置$PATH为使用 Postgres 库或使用已安装psql.

于 2012-08-02T23:52:52.840 回答
2

默认的 Unix 域套接字路径在 libpq 中硬编码。可能发生的情况是,在升级之前,您的应用程序使用了由 Postgres 一键式安装程序安装的 libpq 库,而在升级之后,该库的不同版本被拾取。

要解决这个问题,从程序员的角度来看,您可以指定套接字目录而不是依赖默认值。如果您还不知道正确的目录,请以超级用户(通常是 postgres)连接到任何数据库并在 SQL 中发出:

SHOW unix_socket_directory;

然后使用在连接调用的主机字段中获得的路径更改或重新配置您的应用程序(例如在连接字符串中:)host=/path/to/socket dbname=d user=u。Libpq 会将其识别为 unix 套接字目录,因为它以斜杠开头,而不是主机名或 IP 地址。

于 2012-07-27T13:02:30.723 回答
1

不知何故,我完全忘记了这个套接字文件会因为点而被隐藏。ls -A /tmp/.s.PGSQL.5432如果您正在检查套接字是否确实存在,请确保使用。

执行以下操作后,我的 postgres 应用程序开始再次接受来自 psql 的连接。我认为这与第 3 步有关。

  1. 退出 postgres 应用程序。
  2. 在终端类型postgres -D ~/Library/Application\ Support/Postgres/var中。如果您使用的是 postgres 应用程序,这是数据目录。如果您不使用 postgres 应用程序,则需要找出数据目录的真正含义。
  3. 我收到来自 OS X 的提示,询问我是否要允许传入流量。我点击是。
  4. 在不同的终端选项卡类型psql中。您应该成功连接。
  5. 键入\q以退出 psql。
  6. 回到运行 postgres 的选项卡上,键入ctrl c停止 postgres。
  7. 启动 postgres 应用程序。psql 应该可以工作。
于 2013-08-10T21:22:56.400 回答
0

我已经通过卸载并重新安装它解决了这个问题

于 2013-06-26T00:43:09.590 回答
0

问题是山狮有它自己的 psql 客户端 (/usr/bin/psql),它显然试图通过在与安装程序不同的位置搜索本地套接字文件来连接 postgres。您可以更改您的 PATH 变量以首先包含您的 postgres bin 文件夹,或者将默认的 /usr/bin/psql 替换为您安装的那个。

于 2013-07-03T14:00:49.000 回答