Mountain Lion Postgres 无法连接

Posted

技术标签:

【中文标题】Mountain Lion Postgres 无法连接【英文标题】:Mountain Lion Postgres could not connect 【发布时间】:2012-07-27 11:05:39 【问题描述】:

更新到山狮后,我的 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

好像有些东西没有指向正确的地方

【问题讨论】:

听起来你在使用 psql 的那台机器上有一些其他的 postgres 版本。也许您也可以告诉我们您的安装历史? 我已经使用 postgresql.com 的一键安装程序安装了它。在我更新做山狮之前它工作正常 我已经解决了这个问题,卸载并重新安装 Postgresql。谢谢 这为我解决了这个问题:jaygoldman.com/2012/11/…(总结:从套接字文件的实际位置到 pg 正在查找的位置建立一个符号链接) 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

我在 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 的顶部可以解决所有问题。【参考方案3】:

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

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

SHOW unix_socket_directory;

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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于Mountain Lion Postgres 无法连接的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Mountain Lion 上安装 therubyracer -v '0.10.0'

升级到 Mountain Lion 后无法访问 MySQL 数据库(使用 MAMP)

Mac OS X Mountain Lion 10.8 中的 Firefox X11

错误:MongoDB:未知版本:mountain_lion

在 Mountain Lion 上使用 Homebrew 安装 mcrypt 支持 php54 的问题

sh Mac OS X 10.7 / 10.8 / 10.9(Lion / Mountain Lion / Mavericks)Bootstrapping