和其他一些人一样,当我在项目中运行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的优秀包装器