Postgres / Mac - '服务已加载',但'无法连接到服务器'

时间:2018-02-07 16:00:14

标签: postgresql homebrew

我在我的Mac上运行Homebrew安装的Postgres版本9.6.3(High Sierra,10.13.3),今天早上我发现Postgres遇到了一些问题。它昨晚工作正常,然后我把电脑睡了......当我今天早上醒来并尝试运行凤凰应用程序时,我得到了

[error] Postgrex.Protocol (#PID<0.306.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused

正在运行psql

psql: 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"?

所以似乎服务器已经停止了......但是,运行我的别名pg-start,转换为launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist返回

/usr/local/Cellar/postgresql/9.6.3/homebrew.mxcl.postgresql.plist: service already loaded

所以这很令人困惑,因为似乎有一个命令表明Postgres没有运行,而另一个命令表明它是。

我无法回想起来,但是我可能在昨晚让电脑进入睡眠状态之前已经停止了服务器,我实际上通常不这样做...我的pg-stop别名是{{1 }}

虽然我不明白为什么会导致问题,但这是我脑海里唯一能够解决的问题。我可能已经做过。

我已尝试重启我的机器,但问题仍然存在。我在调试此类问题方面经验不足,所以我们非常感谢任何指导或建议。

1 个答案:

答案 0 :(得分:0)

好吧,我解决了,但我不确定究竟是什么问题。为了获得更多错误信息,我跑了

postgres -D /usr/local/var/postgres

给了我

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 323) running in data directory "/usr/local/var/postgres"?
我之前遇到过的,所以我知道如何继续......

以下是解决此问题的步骤:

首先,我跑了

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

返回

pg_ctl: another server might be running; trying to start server anyway
server starting
My-MBP:~ me$ FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 1188) running in data directory "/usr/local/var/postgres"?

然后我运行了我的别名pg-stop(请参阅上面的问题以获取完整命令),然后是

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

一次。这一次,它返回了

server starting
My-MBP:~ me$ LOG:  database system was shut down at 2018-02-07 11:10:43 EST
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

现在Postgres正常运行 - psql命令等

但是,现在我的别名pg-stop无效 -

/Users/me/Library/LaunchAgents/homebrew.mxcl.postgresql.plist: Could not find specified service

我跑了

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

然后恢复了我的pg-stop别名。现在,pg-startpg-stop正在按原样运作。

我希望这对未来的某些人有所帮助,但如果有人能解释这里发生的事情,我真的很感激能够更深入地了解出了什么问题。