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

Mac Big Sur启动PostgreSQL提示pg_notify目录不存在如何解决

问题根因

该报错与LaunchAgents路径下的plist符号链接状态无关,触发原因是指定的PostgreSQL数据目录/usr/local/var/postgres结构损坏,缺失了运行必需的pg_notify系统子目录——这个目录是PostgreSQL用来存储LISTEN/NOTIFY异步消息队列数据的核心目录,启动时校验不到就会直接终止进程,输出shutdown日志。

修复步骤

按风险从低到高依次尝试:

  • 方案1:手动补建缺失目录并修正权限
    Homebrew安装的PostgreSQL默认以当前登录用户身份运行,不需要切换到专用postgres用户,直接执行以下命令补目录、配权限即可:
    # 补建缺失的pg_notify目录
    mkdir -p /usr/local/var/postgres/pg_notify
    # 配置目录权限为仅所有者可读可写可执行,符合PostgreSQL的安全校验要求
    chmod 700 /usr/local/var/postgres/pg_notify
    # 修正目录所有者为当前用户
    chown $(whoami):staff /usr/local/var/postgres/pg_notify
    
    执行完成后重新运行postgres -D /usr/local/var/postgres验证启动状态即可。
  • 方案2:如果补建pg_notify后继续提示其他系统目录缺失,说明数据目录系统结构损坏范围较大,不要手动逐个创建目录,直接用Homebrew自带的修复命令自动补全所有系统结构:
    # 先杀掉可能残留的PostgreSQL进程,避免文件锁冲突
    pkill -u $(whoami) postgres
    # 执行PostgreSQL数据目录自动修复
    brew postgresql-upgrade-database
    
    该命令会自动匹配当前安装的PostgreSQL版本,补全所有缺失的系统目录、校验版本兼容性,不会删除已有的业务数据。
  • 方案3:如果上述操作仍然启动失败,检查Big Sur系统对/usr/local路径的权限管控导致的全目录权限错乱,执行整体权限修复:
    chmod -R 700 /usr/local/var/postgres
    chown -R $(whoami):staff /usr/local/var/postgres
    

操作提示:执行任何修复前如果有重要业务数据,可先执行tar -zcf ~/postgres_backup.tar.gz /usr/local/var/postgres把整个数据目录打包备份,不要直接删除/usr/local/var/postgres目录,否则会造成不可逆的数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:12:13