Is the server running on host “localhost” (::1) and accepting TCP/IP connections on port 5432?
在此之前,请注意我在Stack Overflow和网络上的文章中发现了几个类似的问题,但这些都没有帮助我解决我的问题:
- PG错误无法连接到服务器:连接被拒绝服务器是否在端口5432上运行?
- PG :: ConnectionBad - 无法连接到服务器:连接被拒绝
- psql:无法连接到服务器:连接被拒绝
现在,问题在于:
- 我有一个像魅力一样的Rails应用程序。
- 与我的合作者一起,我们使用GitHub一起工作。
-
我们有一个
master 和一个mvp 分支。 -
我最近用Homebrew(Mac)更新了我的
git 版本。 - 我们使用Foreman在本地启动我们的应用程序。
现在,当我尝试在本地启动应用程序时,出现以下错误:
1 2 3 4 5 6 7 | 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? |
我试图多次重启计算机。
我还检查了
1 2 3 4 | 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 |
如您所见,那里没有
知道如何解决这个问题吗?
运行
1 2 | FATAL: lock file"postmaster.pid" already exists HINT: Is another postmaster (PID 379) running in data directory"/usr/local/var/postgres"? |
然后在HINT中运行
你应该好好去。
你很可能没电了,你的postgresql服务器没有正确关机。
最简单的解决方法是下载官方postgresql应用程序并启动它:它将强制服务器启动(http://postgresapp.com/)
很可能是因为您的系统意外关闭
尝试
1 | postgres -D /usr/local/var/postgres |
你可能会看到
1
2 FATAL: lock file"postmaster.pid" already exists
HINT: Is another postmaster (PID 449) running in data directory"/usr/local/var/postgres"?
然后试试
1 | kill -9 PID |
例
1 | kill -9 419 |
它应该正常开始postgres
它可能就像postgresql服务失败一样简单。试试跑步:
1 | sudo service postgresql start |
这解决了我的问题。
这适用于我的情况:
1 2 3 | brew uninstall postgresql rm -fr /usr/local/var/postgres/ brew install postgresql |
这可以是因为意外关闭而没有删除为postgress创建的pid文件。因此,要解决此问题,请删除此pid文件。
找到postgres数据目录。在使用自制程序的MAC上,它是
删除pid文件
rm postmaster.pid
重新启动postgress。在Mac上,
brew服务重启postgresql
我通过这个命令解决了这个问题
1 | pg_ctl -D /usr/local/var/postgres start |
有时,您可能会收到此错误
1 | pg_ctl: another server might be running; trying to start server anyway |
因此,尝试运行以下命令,然后运行上面给出的第一个命令。
1 | pg_ctl -D /usr/local/var/postgres stop |
我运行postgresql(mac)的Ruby on Rails应用程序几乎同样出错了。这对我有用:
1 | brew services restart postgresql |
如果要在Linux上重新启动Postgresql,则必须使用以下命令。
对于Docker用户:在我的情况下,它是由过多的docker镜像大小引起的。您可以使用
1 | docker system prune --all --force --volumes |
警告:根据手册(
This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
首先我试过了
lsof -wni tcp:5432
but it doesn't show any PID number.
我试过第二次
Postgres -D /usr/local/var/postgres
and it showed that server is listening.
所以我只是重新启动我的mac以恢复所有端口,它对我有用。
这对我有用:
跑
之后它将显示当前附加到过程的PID。
之后运行
如果那不起作用,
尝试user8376606提供的解决方案,它肯定会工作!
我经常在Windows上遇到这个问题,我解决问题的方法是服务 - 点击PostgreSQL数据库服务器8.3 - 点击第二个标签"登录" - 选择第一行"本地系统帐户"。