Postgresql(pgsql)客户端期望与postgrsql-server处于不同的位置的套接字。

15 浏览
0 Comments

Postgresql(pgsql)客户端期望与postgrsql-server处于不同的位置的套接字。

在尝试连接到在我的工作站上本地运行的postgres时,我遇到了以下问题:

$ sudo -u postgres psql -c "create role ..."
无法更改目录到“/home/esauer/workspace/cfme”
psql: 无法连接到服务器:没有这个文件或目录
    服务器在本地运行并接受连接吗?
    在Unix域套接字“/tmp/.s.PGSQL.5432”上?

我的postgres-server安装将套接字创建在/var/run/postgresql中。

如何让客户端在正确的位置查找?

0
0 Comments

问题的原因是pgsql客户端在寻找socket时期望的位置与pgsql服务器不同。解决方法是使用正确的host选项或在.psqlrc用户文件中设置它。

在使用psql --help命令时检查--host选项。然后可以通过在.psqlrc用户文件中设置来使其永久生效。

在这种情况下,尝试使用以下命令:

psql -h /var/run/postgresql -d your_database

所以,默认的"host"值是"local socket",但这并不能告诉我为什么它在/tmp/而不是/var/run中寻找该socket。

哦,搞明白了... 'psql -h /var/run/postgres'将psql指向了正确的本地socket目录。谢谢!

在.psqlrc文件中定义host的语法是什么?(\set HOST /var/run/postgresql并没有起作用。)

0