Ubuntu20重装PostgreSQL后Rails5连接套接字路径异常求助
解决PostgreSQL套接字默认路径不匹配问题
方法一:修改PostgreSQL服务端配置,新增/tmp套接字监听
PostgreSQL支持同时监听多个Unix套接字路径,既能保留原有路径,又能兼容客户端默认的/tmp搜索路径:
- 找到对应版本的PostgreSQL配置文件,Ubuntu 20默认路径是
/etc/postgresql/<你的PG版本号>/main/postgresql.conf(比如PG12就是/etc/postgresql/12/main/postgresql.conf) - 找到
unix_socket_directories配置项,将其值修改为/var/run/postgresql,/tmp(多个路径用逗号分隔) - 重启PostgreSQL服务生效:
sudo systemctl restart postgresql - 验证:执行
ls /tmp/.s.PGSQL.5432,如果能看到该文件说明配置生效
方法二:调整客户端默认连接路径(针对Rails/pg gem)
如果不想改动服务端配置,可通过客户端配置让pg gem默认指向正确的套接字路径:
方式1:设置全局环境变量
在你的shell配置文件(~/.bashrc或~/.zshrc)末尾添加:
export PGHOST="/var/run/postgresql"
执行source ~/.bashrc(或对应配置文件)使配置生效,之后所有通过pg gem创建的Rails项目都会默认使用这个路径连接。
方式2:使用PG服务配置文件
创建~/.pg_service.conf文件,写入以下内容:
[default] host = /var/run/postgresql
pg客户端会自动读取这个默认服务配置,优先使用指定的套接字路径。
两种方法选其一即可,方法一适合所有需要连接PG的客户端,方法二更针对当前用户的Ruby/Rails环境。
内容的提问来源于stack exchange,提问作者victorcreedbt
相关产品推荐
相关产品推荐

