PostgreSQL重启后仍报PG::ConnectionBad套接字不存在错误如何解决
问题根因
你使用的是WSL环境下通过apt安装的PostgreSQL 14,网上提到的/usr/local/var/psql路径是macOS通过Homebrew安装PostgreSQL的默认数据路径,和你的环境不匹配,无需参考该方案。
报错的核心原因是:PostgreSQL服务重启成功,但实际监听的Unix套接字路径和Rails默认查找的/var/run/postgresql/.s.PGSQL.5432不一致。
第一步:确认PostgreSQL实际监听路径
执行命令查看PostgreSQL启动参数:
ps aux | grep postgres
在输出的postgres进程启动参数中,找-k参数后跟随的路径,就是PostgreSQL实际存放套接字文件的目录,常见的路径还有/tmp。
可选解决方案二选一即可
方案1:修改Rails数据库配置(操作更简单)
打开项目下的config/database.yml,在你使用的环境(开发环境默认是development)配置项中添加指定套接字路径:
development: # 其他原有配置保留,新增下面一行 host: 你刚才查到的PostgreSQL套接字目录路径 # 也可以直接写host: localhost,强制走TCP连接,不需要匹配Unix套接字路径
修改后重新执行rails db:migrate即可。
方案2:修改PostgreSQL监听配置(全局生效,适合多项目共用PG的场景)
- 打开PostgreSQL配置文件,你安装的是14版本,路径为
/etc/postgresql/14/main/postgresql.conf - 找到
unix_socket_directories参数,把Rails默认查找的路径加进去,修改为:unix_socket_directories = '/var/run/postgresql, 你之前查到的原有套接字路径' - 保存文件后重启PostgreSQL服务:
sudo service postgresql restart
重启完成后即可正常执行Rails数据库操作。
内容的提问来源于stack exchange,提问作者ILikeClouds
相关产品推荐
相关产品推荐

