PostgreSQL error 'Could not connect to server: No such file or directory'
和其他一些人一样,当我运行rakedb:migrate在我的项目中,或者甚至为我的RubyonRails3.2应用程序尝试大多数数据库任务时,我也会遇到这个错误。
PGError (could not connect to server: No such file or directory. Is the
server running locally and accepting connections on Unix domain socket
"/tmp/.s.PGSQL.5432"?
很久以前我用自制安装了PostgreSQL,最近我尝试安装MongoDB,但我的PostgreSQL安装从来没有像现在这样。我正在运行OS X v10.6雪豹。
怎么了?我怎么才能更好地理解PostgreSQL是怎样的,应该如何在我的Mac上设置?
到目前为止(我想)这告诉我PostgreSQL没有运行(?).
1 2 | 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正在运行?
1 2 | ? 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:
1 2 | org.postgresql.postgres.plist homebrew.mxcl.postgresql.plist |
我尝试了以下方法,结果如下。
$psql-p 5432-h本地主机
1 2 3 4 5 6 7 8 9 | 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/目录中查找。您需要在堆栈溢出上搜索更多,但基本上您需要symlink postgresql,以便在该tmp路径中查找的任何内容都能找到真正的路径,如果这有意义的话。
在这个链接中,我发现了更多要尝试的东西,特别是按照上面的方法执行symlink,mac osx lion postgres不接受/tmp/.s.pgsql.5432上的连接。我仍然希望有人能对在OS X上安装PostgreSQL背后的概念以及为什么这一切如此困难作出一个恰当的解释。
帮助排除故障的最新见解:
1 | $ which psql // This tells you which PostgreSQL you are USING WHEN you run $ psql. |
然后运行:
1 | $ echo $PATH |
要考虑的关键是:
确保要运行的PostgreSQL副本的路径条目位于OS X系统PostgreSQL的路径之前。
这是一个核心需求,它决定了哪个PostgreSQL可以运行,并且我被告知这会导致大多数这些问题。
检查Postgres目录中是否没有postmaster.pid,可能是
删除此并启动服务器。
检查-https://github.com/mperham/午餐是launchctl的一个很好的包装。
更新:这里有一个更好的修复如果你在OSX上…
网址:http://postgresapp.com/
老回答:
这里是修复程序,更多信息如下:
https://github.com/mxcl/homebrew/issues/5004
首先,停止数据库,然后
对我来说,这很管用
1 | rm /usr/LOCAL/var/postgres/postmaster.pid |
对于你提到的上述错误,这对我来说是可行的。
1)可能更改postgres.conf文件中指定的默认端口号,如果您在安装时提到了其他端口,则默认端口号为5432。
(或)
2)更改postgresql.conf文件中的端口号,重启db服务器
(或)
3)不是psql,而是键入full命令,例如
"psql-p 5432-h本地主机"
- 服务器名称和端口号
如果运行的是homebrew,请卸载postgresql end pg gems:。*
1 2 | $ gem uninstall pg $ brew uninstall postgresql |
下载并运行以下脚本以修复对/usr/local的权限:*https://gist.github.com/rpavlik/768518
1 | $ ruby fix_homebrew.rb |
然后重新安装postgres和pg gem:。*
1 2 | $ brew install postgresql $ initdb /usr/LOCAL/var/postgres -E utf8 |
要让launchd在登录运行时启动postgresql,请执行以下操作:
1 | $ ln -sfv /usr/LOCAL/opt/postgresql/*.plist ~/Library/LaunchAgents |
或者手动启动。
安装PG宝石
1 | $ gem install pg |
我希望能帮上忙
当我将Postgres升级到9.3.x版本时,我遇到了这个问题。对我来说,最快的解决方法是将其降级到我以前的9.2.x版本(不需要安装新版本)。
1 2 3 4 5 6 7 8 | $ ls /usr/LOCAL/Cellar/postgresql/ 9.2.4 9.3.2 $ brew switch postgresql 9.2.4 $ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist $ launchctl LOAD ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist <OPEN a NEW Terminal tab OR window TO reload> $ psql |
这个答案提供了一个更全面的解释以及解决问题的其他方法。
所以在很多问题上,人们似乎已经在运行psql,必须删除
这是一个在Mac Osx Yosemite为我工作的解决方案
希望这有帮助!嘟嘟!
而且,这个答案对我帮助最大:https://stackoverflow.com/a/21503349/3173748
当你跑步的时候:psql-p 5432-h本地主机它不使用环回驱动程序,而是使用真正的套接字,因此需要配置Postgres来接受套接字连接。因此,即使pgadmin和其他客户机可以工作,PSQL也不会工作。
您需要同时更改postgresql.conf文件和pg_hba.conf文件,以便允许通过真正的套接字进行连接。这也将允许从远程IP进行连接,这就是默认情况下禁用它的原因。
这些文件在数据目录中,但实际位置可能会有所不同,这取决于Postgres的安装方式。运行postgres时,运行以下命令:
1 | ps -ef | grep postmaster |
这两个文件是-d目录(可能是/usr/local/pgsql/data)。
对于postgresql.conf文件,取消对listen_地址的注释并将其更改为:
1 | listen_address = '*' |
对于pg_hba.conf,添加行:
1 | host ALL ALL 0.0.0.0/0 md5 |
我通过升级Postgres来解决这个问题。
1 2 | brew UPDATE brew upgrade |
然后我还必须升级数据库以与新的主要版本兼容,因为我从10升级到11。
1 | brew postgresql-upgrade-DATABASE |
(来源:https://github.com/facebook/react native/issues/18760 issuecomment-410533581)
我不太了解Mac或自制,但我对PostgreSQL非常了解。
您想知道日志来自PostgreSQL尝试启动的位置,以及PostgreSQL的socket目录是什么。默认情况下,当您构建pg时,socket目录是/tmp/。如果在构建pg时没有更改这个值,然后启动pg,那么在/tmp中应该可以看到一个socket文件,如果这样做:ls-al/tmp
套接字文件以"."开头,因此您不会看到它以"-a"到ls开头。
如果你在那里看不到一个套接字,也看不到来自ps awux grep postgres的任何内容,那么pg可能没有运行,或者可能是,它是osx安装的。可能发生的情况是,在本地主机上监听端口5432时可能会发生冲突-使用netstat-anp查看在5432上监听的内容(如果有)。如果macosx pg已经在监听该端口,那么这可能是问题所在。
希望有帮助。我听说自制啤酒会让事情变得有点难看,很多人都鼓励我使用虚拟机。
我有PostgreSQL 9.3,也有同样的错误,
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?
我用以下方法修复了这个问题:
1 2 | chmod 777 /var/lib/pgsql/9.3/DATA/pg_hba.conf service postgresql-9.3 restart |
它对我有用。
值得一提的是,我在我的
如果你像我一样到了这里,再检查一下那个文件,确保里面没有任何荒谬的东西。
原因
Lion附带了已经安装的Postgres版本,默认情况下使用这些二进制文件。一般来说,您可以通过使用Homebrew Postgres二进制文件的完整路径来解决这个问题,但其他程序可能仍然存在问题。
解决方案
curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh
通孔
你好,世界:)对我来说最好但奇怪的方法是做下一件事。1)下载postgres93.app或其他版本。将此应用程序添加到/applications/文件夹。
2)在文件
1 | export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH |
这是从
3)从
4)在所有这些操作之后,我很高兴运行
5)另外,如果您想以图形方式查看数据库,您应该安装
当然,它只对本地服务器有用。如果这个说明能帮助其他面临这个问题的人,我会很高兴的。
如果你使用的是MacOS和自制啤酒,我发现这个答案非常有用:
https://stackoverflow.com/a/27708774/4062901
对于我来说,我的服务器正在运行,但由于升级,我在连接时遇到问题(注意:我使用BREW服务)。如果postgres正在运行,请尝试
另外,在手动迁移之后,他们建议(这确实有效,但是)我发现不再有适合我的用户的表。尝试此命令修复:
只要运行
出现此错误的一个原因是,当重新启动计算机时,本地Postgres数据库将关闭。在新的终端窗口中,只需键入:
1 | $psql -h localhost |
重新启动服务器。
在本地运行PostgreSQL可能有不同的问题。我建议清理所有已安装的Postgres版本并重新启动。一旦安装了它,如果您的Rails项目具有最新的
下面是我通常如何在Mac上安装PostgreSQL。如果您在本地根用户下运行数据库,那么可能需要省略创建
原因之一可能是
postgresql.conf文件中的unix socket_目录没有与它要查找的目录一起列出。
在问题示例中,它正在查找目录/tmp,必须在postgresql.conf文件中提供该目录。
像这样:
1 | unix_socket_directories = '/var/run/postgresql,/tmp' # comma-separated list OF directories |
这个解决方案对我有效。
这很简单。只在database.yaml文件中添加主机。