服务器是否在主机“ localhost”(:: 1)上运行并在端口5432上接受TCP / IP连接?


80

在开始之前,请注意,我在网上的Stack Overflow和文章中发现了几个类似的问题,但是没有一个问题能帮助我解决问题:

现在,这里是问题:

  • 我有一个像魅力一样的Rails应用程序。
  • 与我的合作伙伴一起,我们使用GitHub进行协作。
  • 我们有mastermvp分支机构。
  • 我最近git使用Homebrew(Mac)更新了我的版本。
  • 我们使用Foreman在本地启动我们的应用程序。

现在,当我尝试在本地启动该应用程序时,出现以下错误:

PG::ConnectionBad at /
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" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

我试图重新启动计算机几次。

我还检查了以下内容/usr/local/var/postgres

PG_VERSION      pg_dynshmem     pg_multixact    pg_snapshots    pg_tblspc       postgresql.conf
base            pg_hba.conf     pg_notify       pg_stat         pg_twophase     postmaster.opts
global          pg_ident.conf   pg_replslot     pg_stat_tmp     pg_xlog         server.log
pg_clog         pg_logical      pg_serial       pg_subtrans     postgresql.auto.conf

如您所见,其中没有postmaster.pid文件。

知道我该如何解决吗?


您可以使用的内容更新问题postgresql.conf吗?
帕万

Answers:


56

您很可能没电了,并且您的Postgresql服务器没有正确关闭。

最简单的解决方法是下载官方的postgresql应用程序并启动它:它将强制服务器启动(http://postgresapp.com/


2
感谢您的回答。我刚刚下载了该应用程序并启动了它。如果我在启动服务器之前将其关闭,那么我仍然会遇到相同的错误。如果不关闭它,则会收到一条错误消息,指出我的“数据库不存在”。可以关联吗?
Thibaud Clement

如果数据库不存在,则应运行rake db:create。但是,这很可能与之无关……您只是叉了一个仓库或类似的东西?在使用“ rails s”启动服务器之前,您不应该关闭它!该应用程序必须一直运行,直到您想在本地主机上访问站点
Graham Slick

好。不,我没有分叉一个存储库,它与我正在使用的存储库相同。但是我跑了git fetch,也许这就是问题所在。
Thibaud Clement

git fetch不应该删除数据库。如果您运行rake db:create会发生什么?
Graham Slick

1
“没电了”……这就是发生的一切!:-O
Sagar Ranglani

127

运行 postgres -D /usr/local/var/postgres,您应该看到类似以下内容:

 FATAL:  lock file "postmaster.pid" already exists
 HINT:   Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?

然后kill -9 PID在提示中运行

而且您应该很好。


4
对于我的情况,最好的解决方案是我的机器意外关闭并且重新启动服务不能解决问题-谢谢!
Paul Nelligan

3
如果您使用自制软件,brew services start postgres或者brew services restart postgres可以解决问题
Mirror318 '18

1
谢谢!我第二次遇到这个问题,您如何理解这将是解决方案?
qasimalbaqali

1
linux ubuntu dist的任何等效解决方案?
tito.300,19年

1
经过数小时的尝试解决此问题后,这在​​2019年对我有用。
Mwangi Kabiru

52

很有可能是因为您的系统意外关闭

尝试

postgres -D /usr/local/var/postgres

你可能会看到

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?

然后尝试

kill -9 PID

kill -9 419

它应该正常启动postgres


是的,我的系统意外关闭,这解决了我的问题。谢谢。
Developine

19

PostgreSQL服务器可能已关闭,解决方案可能与运行一样简单:

sudo service postgresql start

这为我解决了这个问题。


16

我在运行postgresql(mac)的Ruby on Rails应用程序中遇到了几乎相同的错误。这为我工作:

brew services restart postgresql

14

这在我的情况下有效:

brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql

11

这可能是由为postgres创建的pid文件导致的,由于意外关闭而尚未删除该pid文件。要解决此问题,请删除此pid文件。

  1. 找到postgres数据目录。在使用自制软件的MAC上/usr/local/var/postgres/,可能在其他系统上/usr/var/postgres/

  2. 通过运行以下命令删除pid文件:

    rm postmaster.pid
    
  3. 重新启动后退。在Mac上,运行:

    brew services restart postgresql
    

这对我
有用

3

我通过此命令解决了问题

pg_ctl -D /usr/local/var/postgres start

有时,您可能会收到此错误

pg_ctl: another server might be running; trying to start server anyway

因此,尝试运行以下命令,然后运行上面给出的第一个命令。

pg_ctl -D /usr/local/var/postgres stop

1

这对我有用:运行

sudo lsof -i :<port_number>

之后,它将显示当前附加到进程的PID。

在那之后 sudo kill -9 <PID>

如果那不起作用,请尝试user8376606提供的解决方案,它肯定会起作用!


1

如果要在Linux上重新启动Postgresql,则必须使用以下命令。

/etc/init.d/postgresql restart


1

首先我尝试

lsof -wni tcp:5432,但未显示任何PID号。

第二我尝试了

Postgres -D / usr / local / var / postgres,它表明服务器正在侦听。

因此,我只是重新启动了Mac,以恢复所有端口,它为我工作了。


1

对于Docker用户:就我而言,这是由过多的Docker映像大小引起的。您可以使用以下prune命令删除未使用的数据:

docker system prune --all --force --volumes

警告:按照手册(docker system prune --help):

这将删除:

  • 所有停止的容器
  • 至少一个容器未使用的所有网络
  • 所有悬空的图像
  • 所有悬空的构建缓存

0

我经常在Windows上遇到此问题,解决问题的方法是服务-单击PostgreSQL数据库服务器8.3-单击第二个选项卡“登录”-选择第一行“本地系统帐户”。


0

如果您只是停止PostgreSQL应用程序,它也会给出相同的错误。您只需要重新启动即可。(PostgreSQL 11)


0

我遇到了同样的问题,即使输入密码后也无法启动postgresql服务器,也无法访问我的数据库,并且我一直在做所有可能的方法。

这个解决方案对我有用

对于Ubuntu用户:通过命令行,键入以下命令:

1.service --status-all(提供所有服务及其状态的列表。其中“ +”表示正在运行,“-”表示该服务不再运行)

检查PostgreSQL状态,如果其为“-”,则键入以下命令

2. systemctl start postgresql(再次启动服务器)

在浏览器中刷新postgresql页面,它可以工作

对于Windows用户:

搜索服务,我们可以在其中看到服务列表,然后右键单击postgresql,单击“启动”,然后服务器运行正常。


0

就我而言

  1. 我已经更改了postgresql.conf文件中的端口
  2. 并重新启动Postgresql服务

运行=> service.msc =>重新启动

  1. 现在重试

0

步骤1:

cd /etc/postgresql/12/main/

打开文件名为 postgresql.conf

sudo nano postgresql.conf

将此行添加到该文件

listen_addresses = '*'

然后打开名为 pg_hba.conf

sudo nano pg_hba.conf

并将此行添加到该文件

host  all  all 0.0.0.0/0 md5

它允许使用加密密码的所有用户访问所有数据库

重新启动服务器

sudo /etc/init.d/postgresql restart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.