2016-09-26 92 views
7

我一直在寻找解决方案,并找不到工作解决方案。无法连接到通过brew服务运行的Postgres服务器

我已经在我的MacBook中使用brew(brew install postgres)安装了postgres,我正在使用brew服务运行它(brew services list将postgres显示为正在运行的服务)。但是,当我尝试运行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"?

任何人都已经解决了类似的问题?

回答

2

我从版本的水龙头安装postgresql93时得到了同样的错误。 检查在brew services list~/Library/LaunchAgents/homebrew.mxcl.postgresql93.plist)输出指示的.plist文件,我发现了以下消息:

FATAL: data directory "/usr/local/var/postgres" has group or world access
DETAIL: Permissions should be u=rwx (0700).

这使我这个答案:data directory "/usr/local/var/postgres" has wrong ownership

运行sudo chmod -R 700 /usr/local/var/postgres我得到一个不同的错误后:

FATAL: could not open directory "pg_tblspc": No such file or directory

,然后带我到:`pg_tblspc` missing after installation of latest version of OS X (Yosemite or El Capitan)

运行mkdir /usr/local/var/postgres/pg_tblspc/后,群集已成功启动。

18

我有同样的错误,我通过删除进程PID文件固定它:

rm -f /usr/local/var/postgres/postmaster.pid

1

我的两个答案,从威尔逊和蝈蝈这里将结合。

您可以使用brew services list来检查postgres服务的plist文件,以找到该文件的位置并在您最喜欢的编辑器中打开它。

你应该看到的StandardErrorPath所列数值为:那么你应该尾部使用tail -n 100 /usr/local/var/log/postgres.log

在我的情况下,日志文件的末尾

<key>StandardErrorPath</key> 
<string>/usr/local/var/log/postgres.log</string> 

和错误是以下几点:

2017-12-06 11:51:16.078 GMT [85476] FATAL: lock file "postmaster.pid" already exists 2017-12-06 11:51:16.078 GMT [85476] HINT: Is another postmaster (PID 601) running in data directory "/usr/local/var/postgres"?

这是因为我不得不关闭我的Mac,postgres没有得到清理PID文件的机会。只是删除PID文件rm /usr/local/var/postgres/postmaster.pid和启动Postgres的brew services start postgresql

一句警告:除非您确信的Postgres没有运行不要删除此PID文件。您可以运行brew services stop postgresql,然后等待brew services list的结果显示posgres处于停止状态。

+1

很好的总结和解释,谢谢你的分解。 – coreyward