我更新到山狮后,我的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
似乎有些东西没有指向正确的地方
答案 0 :(得分:8)
我遇到了同样的问题。我个人刚从Postgres安装程序重新安装(在我的情况下是postgresql-9.1.3-1-osx.dmg),重新启动我的mac,一切都很好。附:重新安装没有消除我的数据库:)
答案 1 :(得分:5)
检查您正在使用的psql
。我在使用Heroku的Postgres.app服务器时遇到了同样的问题,发现我根据/usr/bin/psql
设置使用了Apple的$PATH
客户端。您可以将$PATH
设置为使用Postgres库,也可以使用已安装的psql
的完整路径。
答案 2 :(得分:2)
默认的Unix域套接字路径在libpq中是硬编码的。 可能发生的情况是,在升级之前,您的应用程序使用Postgres一键安装程序安装的libpq库,而升级后,将获取此库的不同版本。
要解决此问题,从程序员的角度来看,您可以指定套接字目录,而不是依赖于默认值。 要找到正确的目录(如果您还不知道它),请以超级用户身份连接到任何数据库(通常是postgres)并在SQL中发出:
SHOW unix_socket_directory;
然后使用在connect调用的host字段中获得的路径更改或重新配置您的应用程序(例如,在连接字符串中:host=/path/to/socket dbname=d user=u
)。 Libpq会将它识别为unix套接字目录,因为它以斜杠开头,而不是主机名或IP地址。
答案 3 :(得分:1)
不知何故,我完全忘记了这个套接字文件因为点而被隐藏了。如果要检查套接字是否确实存在,请确保使用ls -A /tmp/.s.PGSQL.5432
。
我做了以下后,我的postgres应用程序开始再次从psql接受连接。我认为这与第3步有关。
postgres -D ~/Library/Application\ Support/Postgres/var
中。如果您使用的是postgres应用程序,那么这是数据目录。如果你没有使用postgres应用程序,你需要找出数据目录的真正含义。psql
。你应该成功连接。\q
以退出psql。ctrl c
以停止postgres。答案 4 :(得分:0)
我通过卸载并重新安装来解决了这个问题
答案 5 :(得分:0)
问题是山狮带有它自己的psql客户端(/ usr / bin / psql),它显然试图通过在与安装程序不同的位置搜索本地套接字文件来连接postgres。您可以更改PATH变量以首先包含postgres bin文件夹,或者将默认的/ usr / bin / psql替换为安装中的文件。