这是我第一次找不到一些技术问题的答案。
>> conn=psycopg2.connect(database="mydb", user="postgres", password="123",port=5432)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
psycopg2.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
1.我的PostgreSQL正在运行
1.我的监听端口肯定是5432
- root@ lanston笔记本电脑:~# psql -l密码:
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
---------------+----------+----------+------------+------------+-----------------------
checkdatabase | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
mydb | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
多谢了!
9条答案
按热度按时间hvvq6cgz1#
psycopg2使用的libpq期望Postgres套接字位于
/var/run/postgresql/
中,但当您从源代码安装Postgres时,默认情况下它位于/tmp/
中。检查是否存在文件
/tmp/.s.PGSQL.5432
而不是/var/run/postgresql/.s.PGSQL.5432
。尝试:fslejnso2#
只有这样才解决了我的问题,做一个符号链接到/tmp/.s.PGSQL.5432:
感谢,Sukhjit Singh Sehra - s-postgresql-server-is-running
z4iuyo4d3#
尝试将端口更改为5433,而不是5432
gz5pxeao4#
我本来打算对Tometzky的回答做一个评论,但是好吧,我有很多话要说...关于你不直接调用
psycopg2.connect
,而是使用第三方软件的情况。tl;dr
将
postgresql.conf
中的unix_socket_directories
设置为/var/run/postgresql, /tmp
,然后重新启动PostgreSQL。简介
我尝试了PostgreSQL 9.2(CentOS 7)和9.5(Ubuntu Xenial)从发行版库,PostgreSQL 9.3,9.4,9.5,9.6,10在CentOS 7从PostgreSQL repo,PostgreSQL 9.6,10在Ubuntu Xenial从PostgreSQL repo.其中只有9.3只听
/tmp
:python-psycopg2
对于
psql
,这不是什么大问题,只是运行匹配的二进制文件的问题。但是,例如,如果您从CentOS的base
或update
存储库安装了python-psycopg2
,它会动态链接到操作系统提供的libpq
。安装了9.3和9.4的操作系统提供9.4的版本:但是PostgreSQL 9.4附带的
libpq
在/var/run/postgresql
中查找套接字,而不是在9.3中:解决方案来自相应软件包的安装后脚本:
暂时删除9.4的备选项:
完成后,重新安装
postgresql94-libs
,或重新添加替代项:pip
另一方面,如果您将
psycopg2
与pip
一起安装,则默认情况下会安装预编译包,该包自带libpq
,它会在/var/run/postgresql
中查找套接字:解决方案是要求
pip
不要安装预编译包,并使pg_config
的PostgreSQL正确版本可用:您甚至可以将
--no-binary
开关添加到requirements.txt
:unix_socket_directories
更简单的方法是使用
unix_socket_directories
选项:im9ewurl5#
几年后,在OSX 10.8上使用EnterpriseDB 'graphical' install,并pip安装psycopg 2(在链接/Library/... dylib的as described here之后),我遇到了同样的问题。
我认为正确的连接命令是
conn = psycopg2.connect('dbname=DBNAME user=postgres password=PWHERE host=/tmp/')
ha5z0ras6#
在我用康达安装的情况下不得不:
sudo ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.PGSQL.5432
j9per5c47#
在一次
brew upgrade
之后,我遇到了这种情况,我在谷歌上搜索了brew .s.PGSQL.5432
。根据this answer中的建议,我运行了以下命令:
并得到:
我在谷歌上搜索了这个致命错误,并根据this answer中的建议运行了以下命令:
这对我来说已经解决了。
jutyujz08#
输入vpc访问连接器:名称:项目//位置/us-central 1/连接器/
和主机:'/cloudsql/::
它应该适用于gcp上的私有IP postgresql
hs1rzwqc9#
试一次
在此之后更改行
通过Unix域套接字进行数据库管理登录
本地所有postgres***对等***
结束日期
本地所有postgres***md5***
然后执行以下命令
然后运行python程序,它将正常工作