Postgresql(pgsql)客户端期望与postgrsql-server处于不同的位置的套接字。
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
中。
如何让客户端在正确的位置查找?
问题的原因是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并没有起作用。)