Mountain Lion Postgres could not connect
我更新到山狮后,我的postgres doest工作。 它仍在运行,但我的应用程序无法再连接到它。
1 2 3 4 5 6 7 8 | $ 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 |
我的应用程序返回此错误:
1 2 3 | 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
似乎有些东西没有指向正确的地方
我刚遇到同样的问题。我个人刚从Postgres安装程序重新安装(在我的情况下是postgresql-9.1.3-1-osx.dmg),重新启动我的mac,一切都很好。附:重新安装没有消除我的数据库:)
检查您正在使用的
默认的Unix域套接字路径在libpq中是硬编码的。
可能发生的情况是,在升级之前,您的应用程序使用Postgres一键安装程序安装的libpq库,而在升级之后,将获取此库的不同版本。
要解决这个问题,从程序员的角度来看,您可以指定套接字目录,而不是依赖于默认值。
要找到正确的目录(如果您还不知道它),请以超级用户身份(通常是postgres)连接到任何数据库并在SQL中发出:
1 | SHOW unix_socket_directory; |
然后使用在connect调用的host字段中获得的路径更改或重新配置应用程序(例如,在连接字符串中:
不知何故,我完全忘记了这个套接字文件因为点而被隐藏。如果要检查套接字是否确实存在,请确保使用
在我执行以下操作后,我的postgres应用程序再次从psql接受连接。我认为这与第3步有关。
问题是山狮带有它自己的psql客户端(/ usr / bin / psql),它显然试图通过在与安装程序不同的位置搜索本地套接字文件来连接postgres。您可以更改PATH变量以首先包含postgres bin文件夹,或者将默认的/ usr / bin / psql替换为安装中的文件。
我通过卸载并重新安装它解决了这个问题