关于macos:无法连接到通过brew服务运行的Postgres服务器

Cannot connect to Postgres server running through brew services

我一直在寻找解决方案,但找不到可行的解决方案。

我在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"?

有人已经解决了类似的问题吗?


我有同样的错误,我通过删除进程pid文件修复它:

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


我今天遇到了这个问题。 postgres停止接受连接虽然自制软件认为它正在运行。

为了解决它,我跑了,

1
brew services restart -vvv postgresql

从此命令输出,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Generated plist FOR postgresql:
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
   <dict>
     <key>KeepAlive</key>
     <TRUE/>
     <key>Label</key>
     <string>homebrew.mxcl.postgresql</string>
     <key>ProgramArguments</key>
     
       <string>/usr/LOCAL/opt/postgresql/bin/postgres</string>
       <string>-D</string>
       <string>/usr/LOCAL/var/postgres</string>
     </array>
     <key>RunAtLoad</key>
     <TRUE/>
     <key>WorkingDirectory</key>
     <string>/usr/local</string>
     <key>StandardErrorPath</key>
     <string>/usr/LOCAL/var/log/postgres.log</string>
   </dict>
   </plist>

然后我想,嗯也许那个日志文件中有东西,

1
tail -n 10 /usr/LOCAL/var/log/postgres.log

果然,

1
2
[4826] FATAL:  LOCK file"postmaster.pid" already EXISTS
[4826] HINT:  IS another postmaster (PID 1489) running IN DATA directory"/usr/local/var/postgres"?

所以,我删除了该文件

1
rm /usr/LOCAL/var/postgres/postmaster.pid

一切都开始了。


在我的情况下,postmaster.pid文件甚至没有。我能够通过升级postgres来实现它。

1
2
brew UPDATE
brew upgrade

然后,因为我将主要版本从10升级到11,我还必须运行它:

1
brew postgresql-upgrade-DATABASE

(来源https://github.com/facebook/react-native/issues/18760#issuecomment-410533581)


我会在这里结合Wilson和Grasshopper的两个答案。

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

您应该看到StandardErrorPath的值列为:

1
2
<key>StandardErrorPath</key>
<string>/usr/LOCAL/var/log/postgres.log</string>

然后你应该使用tail -n 100 /usr/local/var/log/postgres.log拖尾日志文件的末尾

在我的情况下,错误如下:

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处于停止状态。


对我有用的是删除/usr/local/var/postgres/文件夹,然后再次卸载和安装postgres


我从版本点击安装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).

这让我得到了这样的答案:数据目录"/ usr / local / var / postgres"拥有错误的所有权

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

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

然后导致我:安装最新版OS X(Yosemite或El Capitan)后丢失了`pg_tblspc`

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