Mac OSX Lion Postgres does not accept connections on /tmp/.s.PGSQL.5432
对于Postbres的Homebrew安装,我遇到了常见的Mac OSX错误,
1 2 3 | No such file OR directory IS the server running locally AND accepting connections ON Unix DOMAIN socket"/tmp/.s.PGSQL.5432"? |
这显然是由于系统上有多个安装。 但是,通常的步骤并不能解决问题。
我可以成功启动Postgres并运行:
1 | ps auxw | grep post |
回报..
1 2 3 4 5 6 7 8 9 | euanmillar 847 0.0 0.0 2432768 588 s000 R+ 11:19am 0:00.00 grep postgres euanmillar 845 0.0 0.0 2439324 448 ?? Ss 11:19am 0:00.00 postgres: stats collector process euanmillar 844 0.0 0.0 2443176 1520 ?? Ss 11:19am 0:00.00 postgres: autovacuum launcher process euanmillar 843 0.0 0.0 2443044 544 ?? Ss 11:19am 0:00.00 postgres: wal writer process euanmillar 842 0.0 0.0 2443044 584 ?? Ss 11:19am 0:00.00 postgres: writer process euanmillar 841 0.0 0.0 2443044 596 ?? Ss 11:19am 0:00.00 postgres: checkpointer process euanmillar 839 0.0 0.0 2443044 3616 s000 S 11:19am 0:00.02 /us |
所以它看起来像postgres正在运行。
我在postgresql.conf中注释了以下几行
1 2 3 | port = 5432 unix_socket_directory = '/var/pgsql_socket' unix_socket_permissions = 0777 |
在var / pgsql_socket /我有一个隐藏文件.s.PGSQL.5432
我在这里尝试了许多帖子的解决方案。 这一点特别相似:
https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why
但不同之处在于我确实有一个'/ var / pgsql_socket'目录,这个目录已经归结为每个人。 我使用Homebrew完全删除并重新安装Postgres,但我仍有同样的问题。
你需要删除postmaster.pid,它应该在以下路径中:
对我来说,我删除了
一个更简单的解决方案是找到套接字实际所在的位置与预期的位置。就我而言,我跑了:
1 2 3 | $ locate PGSQL.5432 /private/var/pgsql_socket/.s.PGSQL.5432 /private/var/pgsql_socket/.s.PGSQL.5432.lock |
然后将预期的套接字位置符号链接到实际的套接字位置。
1 | $ ln -s /private/var/pgsql_socket/.s.PGSQL.5432 /tmp/.s.PGSQL.5432 |
系统客户端正在使用,而不是您的brew版本。符号链接方法仅持续到下次重新启动。这种方法解决了我认为的根本问题
这不是OS X特定的问题。您需要清理postgres安装,然后重新安装。我在ubuntu 12.04上遇到过这个问题。在清理以前的安装时,您需要删除以postgres开头的所有软件包(postgresql,postgresql-common,postgresql-client等),换句话说,postgres *。我没有用过brew,在OS X Lion上使用了端口。我猜相应的命令应该是
此外,如果您认为服务器已在运行,则可以尝试
但是,
编辑:看起来以下链接可以帮助https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why
如果是,那么这个问题可能是重复的。
我在Mac Serria上遇到了同样的问题。在Mac Serria中,如果使用GUI安装程序而不是自制程序,则可以在
删除此文件后,一切都应该正常工作。