像其他一些人一样,当我在我的项目中运行 rake db:migrate 或什至为我的Ruby on Rails 3.2 应用程序尝试大多数数据库任务时,我遇到了这个错误。
PGError(无法连接到服务器:没有这样的文件或目录。服务器是否在本地运行并接受 Unix 域套接字“/tmp/.s.PGSQL.5432”上的连接?
很久以前我用Homebrew安装了PostgreSQL ,最近尝试安装MongoDB之后,我的 PostgreSQL 安装从未如此。我正在运行 OS X v10.6 Snow Leopard。
出了什么问题,我如何更好地了解 PostgreSQL 是如何以及应该在我的 Mac 上设置的?
到目前为止(我认为)这告诉我 PostgreSQL 没有运行(?)。
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 正在运行?
✪ 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 文件。我不确定这是否相关。
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist
我尝试了以下并得到如下结果。
$ psql -p 5432 -h 本地主机
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 进行符号链接,以便在该 tmp 路径中查找的任何内容实际上都能找到真正的路径,如果这有意义的话。
这是我发现更多尝试的链接,特别是按照上面的符号链接,Mac OSX Lion Postgres 不接受 /tmp/.s.PGSQL.5432 上的连接。我仍然希望有人能对在 OS X 上安装 PostgreSQL 背后的概念以及为什么这一切如此困难做出一个体面的解释。
帮助排除故障的最新见解:
$ which psql // This tells you which PostgreSQL you are using when you run $ psql.
然后运行:
$ echo $PATH
要考虑的关键是:
确保要运行的 PostgreSQL 副本的路径条目位于 OS X 系统的 PostgreSQL 路径之前。
这是一个核心要求,它决定了运行哪个 PostgreSQL,据我所知,这会导致大多数这些问题。