PG错误:无法连接到服务器:连接被拒绝。服务器是否在5432端口运行?

18

最近我更新了我的电脑(运行Mountain Lion的MacBook Pro),自那以后,每当我设置一个Rails项目时,我的机器就会崩溃,并且无法连接到PG。目前,在尝试访问本地主机时,我得到以下错误:

PG :: ERROR无法连接到服务器:拒绝连接“localhost”
(::1),并接受端口5432上的TCP / IP连接吗?无法连接到服务器:连接
拒绝“localhost”(127.0.0.1)上是否正在运行服务器,并在端口5432上接受TCP / IP连接?无法连接到服务器:连接被拒绝“localhost”(fe80 ::1) ,并接受TCP / IP连接端口5432?

这是一个清单和我尝试过的事情列表;

  1. PostgreSQL版本为9.3.4
  2. 我通过HomeBrew安装它
  3. 我在我的database.yml文件中有host:localhost
  4. Rails版本为4.1.1,ruby 2.0.0p247(2013-06-27修订版41674)[x86_64-darwin12.5.0]
  5. 运行brew uninstall postgresql然后brew install postgresql
  6. 尝试访问我的postgres.conf文件,但未经过PGAdmin和命令行允许
  7. 运行locate pg_hba.conf,终端将显示以下内容;

    WARNING: The locate database (/var/db/locate.database) does not exist.
    
  8. 我也尝试使用rails 4.0但仍然遇到了问题

  9. 在我更新电脑之前,我仍然可以在我的计算机上继续进行其他已开始或已完成的项目。

  10. 当我从终端运行psql时,我会得到以下信息: psql:无法连接到服务器:没有这样的文件或目录 该服务器是否在本地运行并接受 连接在Unix域套接字“/tmp/.s.PGSQL.5432”上?

我真的迷失了方向,不知道该做什么。任何帮助将不胜感激。

更新:

感谢这个问题,通过简单下载适用于Mac的Postgres.app就解决了所有问题。现在一切都很好。


1
你能从控制台(psql)连接到你的PG吗? - Uri Agassi
看起来您已经验证了Postgres已安装,但它也需要运行! :) - Nick Veys
@UriAgassi 我应该补充一下,当我输入 psql 时,会得到以下信息:psql: 无法连接到服务器:没有此文件或目录 服务器是否正在本地运行并接受 Unix 域套接字 "/tmp/.s.PGSQL.5432" 上的连接? - user3749994
http://www.postgresql.org/docs/9.1/static/server-start.html - Uri Agassi
1
@UriAgassi 我通过下载并使用 Mac 版的 Postgres.app 解决了这个问题。现在运行得很好 :) - user3749994
4个回答

23
在你的命令行中运行。
postgres -D /usr/local/var/postgres
如果结果与下一个类似。
LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 10, which is not compatible with this version 11.

运行

brew postgresql-upgrade-database

根据这篇文章


谢谢您。在我安装一个无关的软件包后,我遇到了同样的问题。Homebrew 更新了 PG,导致 DB 文件不兼容。 - Jan Klimo
我在升级我的Mac到Big Sur时不得不这样做。 - cspam

22

如果您更新了Mac,则此过程比您想象的要容易,但是/usr/local/var/postgres/中缺少postmaster.pid文件。因此,您需要启动postgres进程以创建postmaster.pid。

如果postgres正在运行,则:

手动停止:

pg_ctl -D /usr/local/var/postgres stop -s -m fast

手动启动:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

现在一切应该都正常工作了。

10

如果您已经通过brew安装

$ brew services stop postgresql
#adjust below  path accordingly to your machine 
$ rm /usr/local/var/postgres/postmaster.pid 
$ brew services start postgresql

1
对于M1系统,/usr/local/文件被移动到/opt。因此,homebrew将postgres安装在/opt/homebrew/var/postgres。
尝试手动启动服务器,
pg_ctl -D /opt/homebrew/var/postgres -l /opt/homebrew/var/postgres/log start

然后尝试检查服务器是否正在运行,

pgrep -l postgres

如果上面的命令输出正常,那么服务器应该是在运行中。尝试查找服务器连接。
sudo find /tmp/ -name .s.PGSQL.5432

然后通过以下方式连接到数据库:

psql -h /tmp/ databaseName

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接