我有一个可以连接到postgres的终端
psql testdb
但是当我打开新标签页或新终端并尝试连接到psql时会返回错误
此错误返回
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5433"?
我尝试创建另一个用户并使用另一个端口
createuser testing_multiple
psql -p 5433
发生同样的错误。
答案 0 :(得分:1)
您的问题可能是您在virtualenv
内工作。它不是chroot
,但它设置了一堆环境变量来伪造本地环境,很可能包括PATH
和其他设置。
很可能unix套接字与编译成您正在使用的psql
二进制文件的位置不同。我说你的PostgreSQL服务器套接字可能实际上在/tmp/.s.PGSQL.5433
,在这种情况下export PGHOST=/tmp/
将起作用。由于您可以在virtualenv终端内进行连接,因此您可以检查 - 在psql
内,运行SHOW unix_socket_directories;
。这里显示的位置是PGHOST
中可以提供的连接到PostgreSQL服务器的地方。
export PGHOST=localhost
工作的原因是您强制psql
(以及使用libpq
的其他客户端)通过TCP / IP连接,而不是默认的unix套接字连接。< / p>