小编典典

psycopg2.OperationalError:严重:不支持的前端协议1234.5679:服务器支持2.0到3.0

python

我正在使用Macbook

当连接localhost
db(在Mac上为PostgreSQL)时,Psycopg2可以很好地工作。当我尝试在Windows10上连接PostgreSQL数据库时,引发了错误。

以下代码是我用于连接的内容,主机只是Windows10的IP

db= psycopg2.connect(database='dbname',user='username',password="secret",host="192.168.3.9",port="5432")

错误:

  File "path/to/psycopg2/__init__.py", line 126, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL:  unsupported frontend protocol 1234.5679: server supports 2.0 to 3.0

这是因为系统兼容性还是其他原因?我尝试了其他Windows机器,但没有运气使其工作。但是,当我使用Node.JS模块pg时,我能够在Windows上连接PostgreSQL。


阅读 804

收藏
2020-12-20

共1个答案

小编典典

1234.5679是客户端发送的用于请求SSL加密数据库连接的特殊代码,自1999年提交e0e7daef6da以来,对它的支持就一直存在于PostgreSQL中。但是您的PostgreSQL不能这么老,因为在2003年之前未添加对协议版本3.0的支持。

实际上,通过研究src/backend/postmaster/postmaster.c和阅读邮件列表,这是PostgreSQL服务器上的错误:

必须将客户端配置为尝试GSS身份验证,并且当服务器拒绝时,它希望协商SSL连接,但是服务器目前不希望这样做。因此错误。

请参阅此处的讨论。该错误已在版本12.3中修复。

解决方法是,在客户端上禁用GSS身份验证或SSL协商。

在psycopg2中,通过sslmode="disable"在连接字符串中使用来禁用SSL,而通过来禁用GSS
gssencmode="disable"。有关详细信息,请参见文档

2020-12-20