无法通过 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"?
有人解决过类似的问题吗?
我从 versions tap 安装 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).
这让我得到了这个答案:
在 运行 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/
后集群启动成功。
我遇到了同样的错误,我通过删除进程 pid 文件修复了它:
rm -f /usr/local/var/postgres/postmaster.pid
我会在这里合并 Wilson 和 Grasshopper 的两个答案。
您可以检查 postgres 服务的 plist 文件,使用 brew services list
找到文件的位置,然后在您喜欢的编辑器中打开它。
您应该看到 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] 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
一句警告:不要删除这个 PID 文件,除非你确定 postgres 不是 运行。你可以通过 运行 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', 但可以通过以下方式安装:
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.
删除套接字文件并重新启动后,一切正常。请注意,这是一个隐藏文件,无法通过 window 浏览器看到。删除应该通过命令行完成。
如果您安装了多个版本的 postgresql。下面提到的命令将完成删除进程 id(pid) 并重新启动它的工作。只需确保 select 版本正确即可。
rm -f /usr/local/var/postgresql@9.6/postmaster.pid
brew services restart postgresql@9.6
请同时参考 Eric Corner 的回答以确认问题是否与日志文件中的“锁定文件 postmaster.pid 已存在”有关。
您可能会看到 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
万一所有其他答案都不起作用...
我看到了同样的消息和接受的答案,运行
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 自行重启。
这是在台式机上,我们昨天停电了,所以根据其他答案,我怀疑根本原因是硬关机,没有给事情清理的机会。
问题 - 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
如果您的 postgres.log 文件包含“找不到图像错误”,那么您可能需要重新安装 postgresql:
brew reinstall postgresql
我的问题是与我的数据库的连接打开。
在我的例子中,在更新到 MacOS Monterey 之后需要制作
$ 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.
如果有人在尝试了所有方法后滚动到底部但它不起作用,这就是对我有用的方法。我最终决定不为此使用 brew。
我在 link https://postgresapp.com 之后直接从网站安装了 Postgres 应用程序,初始化了一个新服务器并像往常一样创建了数据库和表。
我也遇到了与端口占用相关的错误和这个答案
对我有用。
在我的例子中(由自制软件安装的 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] 提示:数据目录“/usr/local/var/postgres”中是否有另一个邮件管理员 (PID 969) 运行?
根据上面kill -9 <pid>
杀死pid
通过自制软件重启服务brew services restart postgresql && brew services list
我一直在为此寻找解决方案,但找不到可行的解决方案。
我已经在我的 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"?
有人解决过类似的问题吗?
我从 versions tap 安装 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).
这让我得到了这个答案:
在 运行 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/
后集群启动成功。
我遇到了同样的错误,我通过删除进程 pid 文件修复了它:
rm -f /usr/local/var/postgres/postmaster.pid
我会在这里合并 Wilson 和 Grasshopper 的两个答案。
您可以检查 postgres 服务的 plist 文件,使用 brew services list
找到文件的位置,然后在您喜欢的编辑器中打开它。
您应该看到 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] 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
一句警告:不要删除这个 PID 文件,除非你确定 postgres 不是 运行。你可以通过 运行 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', 但可以通过以下方式安装: 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.
删除套接字文件并重新启动后,一切正常。请注意,这是一个隐藏文件,无法通过 window 浏览器看到。删除应该通过命令行完成。
如果您安装了多个版本的 postgresql。下面提到的命令将完成删除进程 id(pid) 并重新启动它的工作。只需确保 select 版本正确即可。
rm -f /usr/local/var/postgresql@9.6/postmaster.pid
brew services restart postgresql@9.6
请同时参考 Eric Corner 的回答以确认问题是否与日志文件中的“锁定文件 postmaster.pid 已存在”有关。
您可能会看到 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
万一所有其他答案都不起作用...
我看到了同样的消息和接受的答案,运行
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 自行重启。
这是在台式机上,我们昨天停电了,所以根据其他答案,我怀疑根本原因是硬关机,没有给事情清理的机会。
问题 - 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
如果您的 postgres.log 文件包含“找不到图像错误”,那么您可能需要重新安装 postgresql:
brew reinstall postgresql
我的问题是与我的数据库的连接打开。
在我的例子中,在更新到 MacOS Monterey 之后需要制作
$ 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.
如果有人在尝试了所有方法后滚动到底部但它不起作用,这就是对我有用的方法。我最终决定不为此使用 brew。
我在 link https://postgresapp.com 之后直接从网站安装了 Postgres 应用程序,初始化了一个新服务器并像往常一样创建了数据库和表。
我也遇到了与端口占用相关的错误和这个答案 对我有用。
在我的例子中(由自制软件安装的 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] 提示:数据目录“/usr/local/var/postgres”中是否有另一个邮件管理员 (PID 969) 运行?
根据上面
杀死kill -9 <pid>
pid
通过自制软件重启服务
brew services restart postgresql && brew services list