首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PostgreSQL错误‘无法连接到服务器:没有这样的文件或目录’

PostgreSQL错误‘无法连接到服务器:没有这样的文件或目录’
EN

Stack Overflow用户
提问于 2012-09-18 16:19:40
回答 21查看 236.1K关注 0票数 148

像其他一些人一样,当我在我的项目中运行rake :migrate,或者甚至尝试为我的Ruby on Rails 3.2应用程序执行大多数数据库任务时,我也会收到这个错误。

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

我很久以前就用Homebrew安装了PostgreSQL,最近在尝试安装MongoDB之后,我的PostgreSQL安装就再也不一样了。我运行的是OS:X v10.6雪豹。

出了什么问题,我如何更好地了解PostgreSQL是如何以及应该在我的Mac上进行设置的?

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

代码语言:javascript
复制
ps -aef|grep postgres                                                                                                   (ruby-1.9.2-p320@jct-ana) (develop) ✗
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

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

代码语言:javascript
复制
✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

我该如何解决这个问题?我没看到的是什么?

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

代码语言:javascript
复制
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

我尝试了下面的方法,得到了如下结果。

$ psql -p 5432 -h本地主机

代码语言:javascript
复制
psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

我读到这是因为OS X安装了自己的PostgreSQL版本,而Homebrew在不同的位置安装了不同的版本,并且PostgreSQL命令在/tmp/目录中查找。您需要在Stack和Overflow上搜索更多,但基本上是符号链接PostgreSQL,以便任何在临时路径中查找的内容都能找到真正的路径,如果这有意义的话。

在这个链接中,我发现了更多可以尝试的东西,特别是按照上面的方法执行符号链接,。我仍然希望有人能对在OS/X上安装PostgreSQL背后的概念做一个像样的解释,以及为什么这一切都很困难。

有助于故障排除的最新见解:

代码语言:javascript
复制
$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

然后运行:

代码语言:javascript
复制
$ echo $PATH

需要考虑的关键问题是:

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

这是一个核心需求,它决定运行哪个PostgreSQL,也是我被告知导致大多数这些问题的原因。

EN

回答 21

Stack Overflow用户

发布于 2014-02-25 21:24:19

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

删除它并启动服务器。

Check - https://github.com/mperham/lunchy是一个很棒的launchctl包装器。

票数 109
EN

Stack Overflow用户

发布于 2015-01-05 22:26:52

对我来说,这是可行的

代码语言:javascript
复制
rm /usr/local/var/postgres/postmaster.pid
票数 62
EN

Stack Overflow用户

发布于 2013-01-30 05:11:32

如果你使用的是OS X,"Postgres.app“是一个更好的补丁

修复方法如下:

停止database

  • cd /var

  • sudo rm -r pgsql_socket

  • sudo ln -s /tmp pgsql_socket

  • chown _postgres:_postgres pgsql_socket

  • Restart

  • (不是您的计算机)

有关更多信息,请访问"postgresql 9.0.3. on Lion Dev Preview 1“。

票数 60
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12472988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档