2012-07-27 90 views
11

我更新到山狮后,我的postgres做的工作。它仍在运行,但我的应用程序无法再连接到它。山狮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"? 

我仍然可以连接使用命令给psql /Library/PostgreSQL/9.1/bin/psql -U Postgres的

好像有些东西并没有指向正确的位置

+1

听起来像你在该机器上有一些其他的postgres build,你使用的是psql。也许你可以告诉我们关于你的安装历史吗? – araqnid 2012-07-27 11:12:01

+0

我使用postgresql.com中的单击安装程序安装了它。这是工作正常之前,我的更新做山狮子 – 2012-07-27 11:19:35

+0

我解决了这个问题卸载并重新安装Postgresql。谢谢 – 2012-07-27 12:54:40

回答

0

我已经卸载并重新安装它

2

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

要解决这个问题,从程序员的角度来看,您可以指定套接字目录而不是依赖默认值。 要找到正确的目录,如果你不知道它已经,连接到任何数据库作为超级用户(Postgres的一般)和问题SQL:

SHOW unix_socket_directory; 

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

8

我刚刚有同样的问题。就我个人而言,我只是从Postgres安装程序(postgresql-9.1.3-1-osx.dmg)重新安装,重新启动我的Mac,并再次罚款。附:重新安装没有zap我的数据库:)

5

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

+0

这对我有用。 Brew将psql安装在/ usr/local/bin – vish 2012-08-18 20:49:37

+2

我在位于/ usr/local/bin的brew位置安装了postgres。我已将/ etc /路径更改为将/ usr/local/bin放在搜索路径的顶部,以便首先找到brew安装(在/ usr/bin安装之前)。升级到Mountain Lion重置/ etc /路径的内容;因此我也开始在升级后在/ usr/bin(以及令人讨厌的消息“无法连接到服务器...”)上安装苹果安装的psql。将/ usr/local/bin放回/ etc /路径的顶部可以修复所有问题。 – 2012-10-07 00:05:47

0

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

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应该可以工作。