问题 Mountain Lion Postgres无法连接


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

$ 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

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


1762
2017-07-27 11:05


起源

听起来你在那台机器上有一些其他的postgres构建,你正在使用psql。也许你可以告诉我们你的安装历史吗? - araqnid
我使用postgresql.com上的一键安装程序安装它。在我更新山狮之前它工作正常 - Anezio Campos
我解决了这个问题卸载并重新安装Postgresql。谢谢 - Anezio Campos
这解决了我: jaygoldman.com/2012/11/...  (摘要:从套接字文件的实际位置到pg所在的位置建立一个符号链接) - MBHNYC


答案:


我刚遇到同样的问题。我个人刚从Postgres安装程序重新安装(在我的情况下是postgresql-9.1.3-1-osx.dmg),重新启动我的mac,一切都很好。附:重新安装没有消除我的数据库:)


8
2017-07-27 13:39





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


5
2017-08-02 23:52



这对我有用。 Brew在/ usr / local / bin安装psql - vish
我在brew位置/ usr / local / bin安装了postgres。我更改了/ etc / paths以将/ usr / local / bin放在搜索路径的顶部,以便首先找到brew安装(在/ usr / bin安装之前)。升级到Mountain Lion会重置/ etc / paths的内容;因此,我也开始在升级之后在/ usr / bin中拾取苹果安装的psql(并且令人讨厌的消息“无法连接到服务器......”)。将/ usr / local / bin放回/ etc / paths的顶部修复了所有内容。 - Michael Bamford


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

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

SHOW unix_socket_directory;

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


2
2017-07-27 13:02





不知何故,我完全忘记了这个套接字文件因为点而被隐藏。确保你使用 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应该工作。

1
2017-08-10 21:22





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


0
2018-06-26 00:43





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


0
2017-07-03 14:00