该错误表示psql实用程序找不到连接到数据库服务器的套接字.要么您没有在后台运行数据库服务,要么套接字位于其他位置,或者可能需要修复pg_hba.conf
.
步骤1:验证数据库是否正在运行
该命令可能因操作系统而异.但在大多数*ix系统上,以下功能可以工作,它将在所有运行的进程中搜索Postgre
ps -ef | grep postgres
在我的mac osx系统上,这个
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
最后一列显示用于启动服务器的命令和选项.
您可以使用以下选项查看启动postgres服务器的所有可用选项.
man postgres
从这里,你会看到选项-D
和-r
分别是datadir
和-r
;logfilename
.
第2步:如果postgres服务正在运行
使用find
搜索插座的位置,它应该位于/tmp
中的某个位置
sudo find /tmp/ -name .s.PGSQL.5432
如果postgres正在运行并接受套接字连接,上面应该会告诉您套接字的位置.在我的机器上,结果是:
/tmp/.s.PGSQL.5432
然后,try 显式使用该文件的位置通过psql连接,例如.
psql -h /tmp/ dbname
步骤3:如果服务正在运行,但您没有看到套接字
如果找不到套接字,但看到服务正在运行,请验证pg_hba.conf文件允许本地套接字.
浏览到datadir
,你会找到pg_hba.conf
文件.
默认情况下,在文件底部附近,您应该看到以下几行:
# "local" is for Unix domain socket connections only
local all all trust
如果看不到,可以修改文件,然后重新启动postgres服务.