我在centos系统上安装了Postgres、mod_wsgi和python3.5。我已经测试了连接,它在交互式Python和开发应用程序中都运行良好(它是一个金字塔应用程序,因此它是开发服务器)。
我得到了以下错误:
postgresql.exceptions.ClientCannotConnectError: could not establish connection to server
CODE: 08001
LOCATION: CLIENT
CONNECTION: [failed]
failures[0]:
socket('127.0.0.1', 5432)
Traceback (most recent call last):
File "/var/www/wsgi/lib/python3.3/site-packages/postgresql/protocol/client3.py", line 136, in connect
self.socket = self.socket_factory(timeout = timeout)
File "/var/www/wsgi/lib/python3.3/site-packages/postgresql/python/socket.py", line 64, in __call__
s.connect(self.socket_connect)
PermissionError: [Errno 13] Permission denied
The above exception was the direct cause of the following exception:
postgresql.exceptions.ConnectionRejectionError: Permission denied
CODE: 08004
LOCATION: CLIENT
CONNECTOR: [Host] pq://username:***@localhost:5432/db_name
category: None
DRIVER: postgresql.driver.pq3.Driver我花了一些时间查看mod_wsgi文档,发现有一个套接字可能出现的问题。但是,我已经实现了该更改(而apache的相应错误消失了)。
我的假设是,它仍然是一个套接字错误,因为在相同的Python中,甚至在dev安装程序中,连接针在其他地方都能正常工作。
有人能从这里指出正确的方向吗?
发布于 2014-04-09 01:00:13
即使您将数据库连接字符串设置为IP地址,如果是127.0.0.1,我也遇到了PostgreSQL数据库连接器,这些连接器将尝试优化并通过本地UNIX进行连接。如果您的代码在mod_wsgi中运行的用户无法访问该UNIX来访问PostgreSQL,则会出现权限错误导致失败。
我不记得用py-postgresql模块看过它,但几周前我确实使用了PostgreSQL数据库模块的on来实现它。
尝试用实际主机名或正确的IP地址替换127.0.0.1。
https://stackoverflow.com/questions/22924717
复制相似问题