像其他一些人一样,当我在我的项目中运行 rake db: shift 时,甚至在我的 Ruby on Rails3.2应用程序中尝试大多数数据库任务时,我都会得到这个错误。
PGError (无法连接到服务器: 没有这样的文件或目录 服务器在本地运行并在 Unix domain socket 上接受连接 “/tmp/. s.PGSQL. 5432”?
很久以前,我用 自酿的安装了 PostgreSQL,最近尝试安装了 MongoDB之后,我的 PostgreSQL 安装从来没有像现在这样。我正在运行 OS X v10.6雪豹。
什么是错误的,我如何更好地理解 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
我该怎么补救,我没看到什么?
附言: ~/Library/LaunchAgents
包含两个 PostgreSQL. plist 文件。我不确定这是否相关。
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist
我尝试了以下方法,得到了如下结果。
$psql-p 5432-h localhost
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 上的连接来做符号链接。我仍然希望有人能够对在 OS X 上安装 PostgreSQL 背后的概念以及为什么这么困难做一个合理的解释。
帮助解决故障的最新见解:
$ which psql // This tells you which PostgreSQL you are using when you run $ psql.
然后跑:
$ echo $PATH
要考虑的关键是:
确保要运行的 PostgreSQL 副本的路径条目在到达 OS X 系统的 PostgreSQL 之前 COMES。
这是决定运行哪个 PostgreSQL 的核心需求,据我所知,它会导致大多数这样的问题。