You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac High Sierra下Homebrew版PostgreSQL 9.6.3服务已加载但无法连接

解决Mac High Sierra下Homebrew PostgreSQL睡眠唤醒后无法连接的问题

这种睡眠唤醒后PostgreSQL明明显示服务已加载却连不上的情况,我在旧版Mac系统上碰到过好多次,大概率是launchctl服务状态异常或者Postgres进程僵死导致的,给你几个逐步排查修复的方法:

1. 先确认Postgres进程状态

首先得搞清楚Postgres到底有没有在运行,执行以下命令查看进程:

ps aux | grep postgres

如果输出里只有grep postgres这一行,说明主进程根本没起来;如果有多个postgres进程但状态显示Z(僵尸进程),那就得先杀掉这些僵死进程。

2. 强制重置launchctl服务

launchctl经常会出现“服务已加载”但实际进程没启动的假状态,这时候强制卸载再重新加载就能解决:

# 先尝试正常卸载
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# 如果提示卸载失败,加-f强制卸载
launchctl unload -f ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# 重新加载服务
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

3. 查看日志定位具体错误

如果上面的方法没用,就得看Postgres的日志找问题根源,Homebrew安装的Postgres日志默认路径是/usr/local/var/log/postgres.log,执行以下命令查看最新日志:

tail -20 /usr/local/var/log/postgres.log

常见的问题比如:

  • /tmp目录下的Postgres socket文件被系统清理了,这时候可以尝试用socket路径直接连接:psql -h /tmp
  • 数据库目录权限异常,这时候需要修复权限

4. 修复数据库目录权限

睡眠唤醒偶尔会导致文件系统权限错乱,执行以下命令确保数据库目录归当前用户所有:

sudo chown -R $(whoami) /usr/local/var/postgres

执行完后再重启Postgres服务试试。

5. 终极方案:重启系统

如果上面所有方法都不管用,大概率是launchctl的服务状态彻底乱了,重启Mac之后再重新加载Postgres服务,基本都能解决这种睡眠唤醒导致的异常。

内容的提问来源于stack exchange,提问作者skwidbreth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:25:22