PostgreSQL错误“无法连接到服务器:没有此类文件或目录”

和其他一些人一样,当我在项目中运行rakedb:migrate,甚至为我的rubyonrails3.2应用程序尝试大多数数据库任务时,我也会遇到这个错误

PGError(无法连接到服务器:没有这样的文件或目录。是
在本地运行并在Unix域套接字上接受连接的服务器
“/tmp/.s.PGSQL.5432”

很久以前,我用自制软件安装了PostgreSQL,最近在尝试安装MongoDB之后,我的PostgreSQL安装从未如此。我正在运行OS-X v10.6 Snow-Leopard

有什么问题?我如何更好地理解PostgreSQL是如何在我的Mac上设置的

到目前为止(我认为)这告诉我PostgreSQL没有运行(?)

ps-aef | grep postgres([email protected](发展)✗
501 17604 11329 0 0:00.00 ttys001 0:00.00 grep postgres

但这是否告诉我PostgreSQL正在运行

✪ launchctl load-w/usr/local/ceral/postgresql/9.1.4/homebrew.mxcl.postgresql.plist(ruby-1.9.2-p136)
homebrew.mxcl.postgresql:已加载

我该怎么解决?我没看到什么

PS:~/Library/LaunchAgents包含两个PostgreSQL.plist文件。我不确定这是否相关

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

我尝试了以下方法,结果如下

$psql-p5432-hlocalhost

psql:无法连接到服务器:连接被拒绝
服务器是否在主机“localhost”(127.0.0.1)上运行并接受
端口5432上的TCP/IP连接?
无法连接到服务器:连接被拒绝
服务器是否在主机“localhost”(::1)上运行并接受
端口5432上的TCP/IP连接?
无法连接到服务器:连接被拒绝
服务器是否在主机“localhost”(fe80::1)上运行并接受
端口5432上的TCP/IP连接?

从那以后,我读到了发生这种情况的原因,因为OS X安装了自己版本的PostgreSQL,Homebrew在不同的位置安装了不同版本的PostgreSQL,并且PostgreSQL命令在/tmp/目录中查找。您需要在堆栈溢出上搜索更多内容,但基本上是将PostgreSQL符号化,以便在该tmp中查找任何内容路径实际上找到了真正的路径,如果这有意义的话

在这个链接中,我还找到了一些可以尝试的东西,特别是按照上面的方法进行符号链接,Mac OSX Lion Postgres不接受/tmp/.s.PGSQL.5432上的连接。我仍然希望有人能对在OS X上安装PostgreSQL背后的概念做出合理的解释,并解释为什么这么困难

帮助排除故障的最新见解:

$which psql//这会告诉您在运行$psql时使用的是哪个PostgreSQL。

然后运行:

$echo$PATH

需要考虑的关键是:

确保要运行的PostgreSQL副本的路径条目位于OS X系统的PostgreSQL路径之前。

这是一个决定运行哪个PostgreSQL的核心需求,我听说这会导致大多数问题

检查您的postgres目录中是否没有postmaster.pid,可能是/usr/local/var/postgres/

删除此文件并启动服务器

检查-https://github.com/mperham/lunchy 是launchctl的优秀包装器

发表评论