无法连接到通过brew服务运行的Postgres服务器

leo*_*fcx 45 postgresql macos homebrew

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

brew install postgres在MacBook中使用brew()安装了postgres ,我目前正在使用brew服务运行它(将brew services list postgres显示为正在运行的服务).但是,当我尝试运行时,psql我得到以下错误.

psql:无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受Unix域套接字"/tmp/.s.PGSQL.5432"上的连接?

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

Wil*_*lva 98

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

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

  • 谢谢,它有效!但为什么?如何?每次重启后我都运行这个命令吗? (4认同)
  • @ rap-2-h似乎Postgres没有被正确关闭。我必须按住电源按钮关闭Mac时出现此问题。 (4认同)
  • 对于 Apple Silicone Mac,请使用“rm /opt/homebrew/var/postgres/postmaster.pid”,因为默认情况下,brew 文件夹位于“/opt/homebrew”而不是“/usr/local”中。 (4认同)
  • 如果您使用特定版本的keg(例如:postgresql@9.6),请确保使用正确的文件夹而不是"/ postgres /" (3认同)
  • 如果这不起作用,请尝试“tail /usr/local/var/log/postgres.log”。这可能会为您提供有关 postgres 失败的确切原因的更多信息。您通常可以在 google 中发布来自该日志的错误消息,并在 StackOverflow 上找到另一个修复程序:-D (2认同)

Eri*_*ner 58

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

为了解决它,我跑了,

brew services restart -vvv postgresql
Run Code Online (Sandbox Code Playgroud)

从此命令输出,

==> 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>
     <array>
       <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>
Run Code Online (Sandbox Code Playgroud)

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

tail -n 10 /usr/local/var/log/postgres.log
Run Code Online (Sandbox Code Playgroud)

果然,

[4826] FATAL:  lock file "postmaster.pid" already exists
[4826] HINT:  Is another postmaster (PID 1489) running in data directory "/usr/local/var/postgres"?
Run Code Online (Sandbox Code Playgroud)

所以,我删除了该文件

rm /usr/local/var/postgres/postmaster.pid
Run Code Online (Sandbox Code Playgroud)

一切都开始了.

  • 在 M1 `tail -n 10 /opt/homebrew/var/log/postgres.log` (7认同)
  • 对我来说最有用的命令是`tail -n 10 / usr / local / var / log / postgres.log` (2认同)

Nel*_*elu 15

就我而言,postmaster.pid文件甚至不在那儿。我能够通过升级postgres使其工作。

brew update
brew upgrade
Run Code Online (Sandbox Code Playgroud)

然后,因为我将主要版本从10升级到了11,所以我还必须运行以下命令:

brew postgresql-upgrade-database
Run Code Online (Sandbox Code Playgroud)

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

  • 在这些情况下,“/usr/local/var/log/postgres.log”文件可能会将其作为最后几个日志:“致命:数据库文件与服务器不兼容”“详细信息:数据目录由 PostgreSQL 版本初始化” 11,与此版本 12.2 不兼容。` (4认同)

rea*_*ate 13

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

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

您应该看到StandardErrorPath列出的值为:

<key>StandardErrorPath</key>
<string>/usr/local/var/log/postgres.log</string>
Run Code Online (Sandbox Code Playgroud)

然后你应该使用尾部结束日志文件 tail -n 100 /usr/local/var/log/postgres.log

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

2017-12-06 11:51:16.078 GMT [85476]致命:锁定文件"postmaster.pid"已经存在2017-12-06 11:51:16.078 GMT [85476]提示:是否有另一位邮政局长(PID 601)在运行数据目录"/ usr/local/var/postgres"?

这是因为我必须硬关闭我的Mac并且postgres没有机会清理PID文件.只需删除PID文件rm /usr/local/var/postgres/postmaster.pid并启动postgresbrew services start postgresql

警告:除非您确定postgres没有运行,否则不要删除此PID文件.您可以通过运行brew services stop postgresql然后等待brew services list显示posgres 的结果处于停止状态来执行此操作.


小智 13

当我强制重新启动我的Mac时,我遇到了同样的错误。

当我这样做时:

brew services list
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

postgresql        error  256 ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Run Code Online (Sandbox Code Playgroud)

解决此问题的步骤如下:

打开终端并键入以下命令。

cd /opt/homebrew/var/postgres
rm postmaster.pid
Run Code Online (Sandbox Code Playgroud)


小智 7

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

  • 在执行此操作之前,您应该尝试其他响应。 (9认同)

小智 7

就我而言,更新到 MacOS Monterey 后,需要进行

$ brew postgresql-upgrade-database
Run Code Online (Sandbox Code Playgroud)

以及。


Gra*_*per 6

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

致命:数据目录“/usr/local/var/postgres”具有组或世界访问权限
详细信息:权限应为 u=rwx (0700)。

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

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

致命:无法打开目录“pg_tblspc”:没有那个文件或目录

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

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


Dav*_*ave 5

如果您安装了多个版本的 postgresql。下面提到的命令将完成删除进程 id(pid) 并重新启动它的工作。只要确保您选择了正确的版本。

rm -f /usr/local/var/postgresql@9.6/postmaster.pid

brew services restart postgresql@9.6   
Run Code Online (Sandbox Code Playgroud)

另请参阅 Eric Corner 的回答以确认问题是否与日志文件中的“锁定文件 postmaster.pid 已存在”有关。


Der*_*ike 5

问题 - macOS 升级后 Postgres 不工作

我刚刚升级到最新的 macOS (Big Sur)。

由于此错误,我使用postgresql本地实例作为数据库的节点应用程序无法启动:Error: connect ECONNREFUSED 127.0.0.1:5432

显然postgresql不再在我的机器上正常运行。

运行brew services list显示postgresql错误:

Name          Status  User  Plist    
postgresql    error   ***** /Users/*****/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Run Code Online (Sandbox Code Playgroud)

解决方案 - 升级 Postgres

为了解决这个问题,我使用以下命令升级了postgresql

$ brew services stop postgresql
$ brew postgresql-upgrade-database # may need to `rm-rf /usr/local/var/postgres.old` first
$ brew services start postgresql
Run Code Online (Sandbox Code Playgroud)