无法连接 Postgres 伺服器

我一直在寻找这个问题的解决方案,但是找不到有效的解决方案。

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

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

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

88617 次浏览

我从版本的安装中得到了相同的错误 postgreql93。 通过检查 brew services list(~/Library/LaunchAgents/homebrew.mxcl.postgresql93.plist)输出中显示的. plist 文件,我发现了以下信息:

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

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

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

FATAL: 无法打开目录“ pg _ tblspc”: 没有这样的文件或目录

然后我想到了: 在安装了最新版本的 OS X (约塞米蒂国家公园或埃尔卡皮坦)之后,“ pg _ tblspc”缺失

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

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

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

我会把威尔逊和蚱蜢的两个答案结合起来。

您可以使用 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-0611:51:16.078 GMT [85476]致命: 锁定文件“ postmaster. pid”已经存在 2017-12-0611:51:16.078 GMT [85476]提示: 在数据目录“/usr/local/var/postgres”中运行的是另一个邮政局长(PID 601)吗?

这是因为我不得不硬关闭我的 Mac 和 postgres 没有机会清理 PID 文件。只需删除 PID 文件 rm /usr/local/var/postgres/postmaster.pid并开始后缀 brew services start postgresql

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

我今天遇到了这个问题。 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

一切又恢复正常了。

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

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

brew update
brew upgrade

然后,因为我把主版本从10升级到了11,我还得运行这个:

brew postgresql-upgrade-database

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

使用命令更新它

  brew postgresql-upgrade-database

如果您有以下错误 未找到命令“ brew”, < strong > 但可以安装以下命令: Sudo apt install linuxbrew-wrapper

然后使用命令安装

 sudo apt install linuxbrew-wrapper

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

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

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


brew services restart postgresql@9.6

还请参考 Eric Corner 的回答,以确认问题是否与日志文件中的“ lock file postmaster. pid already been”有关。

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

brew services start postgres日志什么都没有,但是手动启动 pg_ctl -D /usr/local/var/postgres start指向:

在/.../openssl/lib/libcrypto. 1.0.0. dylib 中缺少定义 _ RAND _ clean up

试试:

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

万一其他答案都不管用..。

我看到了同样的信息和被接受的答案,跑着

rm -f /usr/local/var/postgres/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 自动重启。

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

问题-升级后的 Postgres 无法工作

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

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

显然,事后已经不能在我的机器上正常运行了。

运行 brew services list会显示 事后的错误:

Name          Status  User  Plist
postgresql    error   ***** /Users/*****/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

解决方案-升级邮政

为了解决这个问题,我用以下命令升级了 事后:

$ brew services stop postgresql
$ brew postgresql-upgrade-database # may need to `rm-rf /usr/local/var/postgres.old` first
$ brew services start postgresql

如果 postgres.log 文件包含“ image not found error”,那么您可能需要重新安装 postgreql:

brew reinstall postgresql

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

就我而言,在升级到 MacOS 蒙特雷之后,我需要

$ brew postgresql-upgrade-database

我也是。

在我的案例中,问题是我试图在 Mac 上的 SSH 会话中启动 brew服务,我的用户当前没有登录。只需登录到 Mac,通过 MacOS 登录 GUI 就解决了这个问题。

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

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

如果有人在尝试了所有东西之后滚动到底部,但是没有效果,这就是对我起作用的东西。我最终决定不用啤酒了。

我安装了 Postgres 应用程序直接从网站下面这个链接 https://postgresapp.com,初始化一个新的服务器,并创建数据库和表像往常一样。

我也得到了端口占用的相关错误和这个答案 Https://stackoverflow.com/a/43825665为我工作。

在我的情况下(postgres 安装自制) ,

  • 跟踪日志以查看错误是什么 tail -n 50 /usr/local/var/log/postgres.log

    2022-04-2816:38:10.509 PDT [84751] FATAL: 锁定文件“ postmaster. pid”已经存在 2022-04-2816:38:10.509 PDT [84751]提示: 在数据目录“/usr/local/var/postgres”中运行的是另一个邮政局长(PID 969)吗?

  • 杀死基于以上 kill -9 <pid>pid

  • 通过自制的 brew services restart postgresql && brew services list重新启动服务

我在强制重启 Mac 的时候也犯了同样的错误。

当我这么做的时候:

brew services list

我得到了这个错误:

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

为解决这一问题所采取的步骤:

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

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