ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

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


W
Wilson Silva

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

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


谢谢,它有效!但为什么?如何?每次重启后我都运行过这个命令吗?
@rap-2-h 似乎没有正确关闭 Postgres。当我必须按住电源按钮关闭 Mac 时,我遇到了这个问题。
如果您使用特定版本的小桶(例如:postgresql@9.6),请确保使用正确的文件夹而不是“/postgres/”
对于 Apple Silicone Mac,请使用 rm /opt/homebrew/var/postgres/postmaster.pid,因为 brew 文件夹默认位于 /opt/homebrew 而不是 /usr/local
叹。每6-15个月发生一次,我必须回到这里。
E
Eric Conner

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

为了修复它,我跑了,

brew services restart -vvv postgresql

此命令的输出,

==> 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>

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

tail -n 10 /usr/local/var/log/postgres.log

果然,

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

所以,我删除了那个文件

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

一切又开始工作了。


对我来说最有用的命令是 tail -n 10 /usr/local/var/log/postgres.log
N
Nelu

在我的情况下,postmaster.pid 文件甚至不存在。通过升级 postgres 让它工作。

brew update
brew upgrade

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

brew postgresql-upgrade-database

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


在这些情况下,/usr/local/var/log/postgres.log 文件可能会将其作为最后几个日志:FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 12.2.
我得到了这个确切的问题。从 postgresql 11 升级到 12 失败,但再次卸载和安装帮助解决了问题。
brew postgresql-upgrade-database 是我一直在寻找的
r
real_ate

我会在这里结合威尔逊和蚱蜢的两个答案。

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

您应该看到 StandardErrorPath 的值列为:

<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] 致命:锁定文件“postmaster.pid”已经存在 2017-12-06 11:51:16.078 GMT [85476] 提示:另一个 postmaster (PID 601) 正在运行数据目录“/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
D
Derek Soike

问题 - 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

解决方案 - 升级 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

这成功了brew postgresql-upgrade-database谢谢
我能够使用 rm -r /usr/local/var/postgres.old 删除 postgres.old 目录
这是给我的,谢谢!
D
Dave

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

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

brew services restart postgresql@9.6   

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


这是对我有用的。我无休止地尝试了 2 小时以上,但它说没有找到这样的文件。然后我查看了这个并指定了版本。瞧!有效
A
António Ferreira

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


在执行此操作之前,您应该尝试其他响应。
这不会删除整个数据库吗?
D
Denis Popov

就我而言,在更新到 MacOS Monterey 后,需要制作

$ brew postgresql-upgrade-database

也是。


疯了,但那有效。
C
Community

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

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

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

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

致命:无法打开目录“pg_tblspc”:没有这样的文件或目录

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

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


N
Nadeem Qasmi

使用命令更新它

  brew postgresql-upgrade-database

如果您有以下错误 Command 'brew' not found,但可以安装:sudo apt install linuxbrew-wrapper

然后使用命令安装它

 sudo apt install linuxbrew-wrapper

a
apb

如果所有其他答案都不起作用......

我看到了同样的消息和接受的答案,正在运行

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

没用。也没有

rm -f /usr/local/var/postgres@9.6/postmaster.pid 在我记得我安装了特定版本之后。

我做了一个 cat /usr/local/var/log/postgresql@9.6.log 并看到:

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 1231) running in data directory "/usr/local/var/postgresql@9.6"?
> ps aux|grep 1231
[...] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/libexec/mobileassetd

**思考的脸**

关闭 iOS 模拟器。 Postgres 自行重新启动。

这是在台式机上,昨天我们断电了,所以根据其他答案,我怀疑根本原因是硬关机而没有给事情清理的机会。


v
voxobscuro

如果您的 postgres.log 文件包含“找不到图像错误”,那么您可能需要重新安装 postgresql:

brew reinstall postgresql

l
lxyyz

就我而言(由 homebrew 安装的 postgres),

跟踪日志以查看错误是什么 tail -n 50 /usr/local/var/log/postgres.log 2022-04-28 16:38:10.509 PDT [84751] 致命:锁定文件“postmaster.pid”已经存在2022-04-28 16:38:10.509 PDT [84751] 提示:另一个 postmaster (PID 969) 是否在数据目录“/usr/local/var/postgres”中运行?

根据上面 kill -9 杀死 pid

通过 homebrew brew services 重启服务 restart postgresql && brew services list


T
The RealDuke

在我自己的情况下,postgres.log 文件包含此 HINT: Is another postmaster already running on port 5432? If not, remove socket file "/tmp/.s.PGSQL.5432" and retry. 删除套接字文件并重新启动后,一切正常。请注意,这是一个隐藏文件,不会通过窗口浏览器可见。删除应通过命令行完成。


f
fkotsian

您可能会看到 libssl/libcrypto 版本的冲突。

brew services start postgres 日志给了我 nada,但手动启动 pg_ctl -D /usr/local/var/postgres start 指向:

/.../openssl/lib/libcrypto.1.0.0.dylib 中缺少定义 _RAND_cleanup

试一试:

brew tap-new $USER/old-openssl
brew extract --version=1.0.2t openssl $USER/old-openssl
brew install openssl@1.0.2t

# and then either brew link openssl@1.0.2t or symlink the required files to current openssl
ln -s /usr/local/Cellar/openssl/openssl@1.0.2t/lib/libcrypto.1.0.0.dylib /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
ln -s /usr/local/Cellar/openssl/openssl@1.0.2t/lib/libssl.1.0.0.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

A
Asdrubal

我的问题是与我的数据库的开放连接。


p
postrational

在我的情况下,问题是我试图在 Mac 上的 SSH 会话中启动 brew 服务,而我的用户当前没有登录。只需通过 MacOS 登录 GUI 登录到 Mac 即可解决问题。

更详细的错误消息包括问题与 gui 相关的提示:

Error: Failure while executing; `/bin/launchctl enable gui/501/homebrew.mxcl.postgresql` exited with 64.

Y
Yashika Sharma

如果有人在尝试了所有内容后滚动到底部并且它不起作用,那么这对我有用。我最终决定不为此使用 brew 。

我通过此链接 https://postgresapp.com 直接从网站安装 Postgres 应用程序,初始化新服务器并照常创建数据库和表。

我也遇到了与端口占用相关的错误,这个答案 https://stackoverflow.com/a/43825665 对我有用。


V
Vijay Shaaruck

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

当我这样做时:

brew services list

我收到了这个错误:

postgresql        error  256 ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

解决此问题的步骤:

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

cd /opt/homebrew/var/postgres
rm postmaster.pid

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅