Postgresql Mac OSX Lion Postgres不接受/tmp/.s.PGSQL.5432上的连接
我在Postgres的自制安装中遇到了一个常见的Mac OSX错误Postgresql Mac OSX Lion Postgres不接受/tmp/.s.PGSQL.5432上的连接,postgresql,osx-lion,homebrew,Postgresql,Osx Lion,Homebrew,我在Postgres的自制安装中遇到了一个常见的Mac OSX错误 No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"? 这显然是由于系统上有多个安装。然而,通常的步骤并不能解决问题 我可以成功启动Postgres并运行: ps auxw | grep post 返回 euanmillar
No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
这显然是由于系统上有多个安装。然而,通常的步骤并不能解决问题
我可以成功启动Postgres并运行:
ps auxw | grep post
返回
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
看来博士后正在运行
我已经在postgresql.conf的以下几行中发表了评论
port = 5432
unix_socket_directory = '/var/pgsql_socket'
unix_socket_permissions = 0777
在var/pgsql_socket/I中有一个隐藏文件.s.pgsql.5432
我在这里尝试了很多解决方案。这个看起来特别相似:
但不同的是,我确实有一个“/var/pgsql_socket”目录,每个人都可以使用它。我使用自制软件完全删除并重新安装Postgres,但仍然存在同样的问题。这不是特定于OS X的问题。您需要清理您的postgres安装,然后重新安装。我在ubuntu 12.04上遇到过这个问题。在清理以前的安装时,您需要删除以postgres(postgresql、postgresql common、postgresql client等)开始的所有包,换句话说,就是postgres*。我没有使用brew,而是在OS X Lion上使用了端口。我想等效的命令应该是
sudo brew remove postgres*
。然后,sudo brew安装postgresql就可以做到这一点
另外,如果您觉得服务器已经在运行,可以尝试sudo-u postgres createuser
。如果失败,您需要重新安装
但是,ps aux | grep post
的输出实际上是grep命令本身。不是在运行postgres服务器
编辑:看起来下面的链接可能会有所帮助
如果是,那么这个问题可能是重复的。一个更简单的解决方案是定位套接字的实际位置和预期位置。就我而言,我跑:
$ locate PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432
/private/var/pgsql_socket/.s.PGSQL.5432.lock
然后将预期的套接字位置符号链接到实际的套接字位置
$ ln -s /private/var/pgsql_socket/.s.PGSQL.5432 /tmp/.s.PGSQL.5432
正在使用系统客户端,而不是brew版本。符号链接方法仅持续到下次重新启动。我认为,这种方法解决了根本问题
/etc/path
/usr/local/bin
的行移到文件顶部。(在/usr/bin
之前)gem卸载页面
)bundle
对我来说,我删除了
/usr/local/var/postgres
中的postmaster.pid。把我修好了 您需要删除postmaster.pid,它应该位于以下路径中:
/usr/local/var/postgres/postmaster.pid
我在Mac Serria上也遇到了同样的问题。在Mac Serria中,如果您使用的是GUI安装程序而不是自制软件,则可以在/Users//Library/Application Support/Postgres/var-9.6
中找到postmaster.pid
删除此文件后,一切正常。输出显示postgres未运行。有关运行时的示例输出,请参阅。您的第一步是使用自制指令实际启动服务器。您的描述混淆了
/var/postgresql
和/var/pgsql\u socket
。感谢您的帮助,如果我的描述有点混淆,请道歉。我运行了pg\u ctl-D/usr/local/var/postgres-l/usr/local/var/postgres/server.log start并获得了消息“服务器启动”,然后ps auxw | grep post返回许多进程。但是当我尝试创建数据库时,我得到了相同的套接字错误。一个提醒,createdb应该作为postgres用户运行。你用过sudo-u postgres createdb吗?不过,这可能与套接字问题无关。谢谢。我遵循了这个建议,特别是SO链接中的建议,并修改了我最初的帖子。不幸的是,我仍然有这个问题。