pqxx:尝试连接到posgres db时的broken_connection

时间:2018-04-19 09:03:07

标签: postgresql psql libpqxx

我在尝试连接到本地postrgres数据库时遇到此问题。到目前为止,我成功使用jdbc连接到相同的数据库或直接在PGAdmin中工作,当我尝试使用pqxx库或shell连接时会发生此错误:

pqxx代码:

#include <pqxx/connection.hxx>

int main(){
    pqxx::connection conn("user=postgres port=5432 dbname=pqxx-test password=postgres");
    return 0;
} 

或来自shell,作为用户postgres:

psql pqxx-test

两种情况都会引发此错误:

  

无法连接到服务器:没有这样的文件或目录是服务器   在本地运行并接受Unix域套接字上的连接   &#34; /var/run/postgresql/.s.PGSQL.5432"

搜索解决方案我想我知道我必须编辑pq_hba.conf和postgresql.conf文件以便以这些方式连接,但是已经设置了pg_hba.conf:

  

本地所有md5

和postgresql.conf

  

的listen_addresses =&#39; *&#39;

顺便说一句,由于viminfo存在问题,我甚至无法编辑这些文件,但这可能是另一个问题..

任何人都可以帮助我吗?

编辑: 使用PostgreSQL 9.6.2 在Ubuntu 14.04上

修改

作为postgres用户,如果我要求使用postgre版本: psql -V

  

结果是 9.6.2

但是查看文件系统层次结构,所有conf文件都在此文件夹中

  

的/ opt / PostreSQL /的 9.4 /数据/

这可能是问题吗?

1 个答案:

答案 0 :(得分:0)

您似乎混合了为ubuntu FS布局配置的客户端postgresql 9.6和可能使用自己的布局从EntrepriseDB(并在/opt/PostgreSQL下安装)下载的postgresql服务器9.4。

假设postgresql正在运行,最简单的解决方案是将host=localhost添加到您的连接字符串,以便它将使用TCP连接而不是不存在的Unix域套接字/var/run/postgresql/.s.PGSQL.5432,因为不匹配。