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

2024-01-03

我正在使用 Macbook

当连接本地主机数据库(Mac 上的 PostgreSQL)时,Psycopg2 运行良好。当我尝试在 Windows10 上连接 PostgreSQL 数据库时出现错误。

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

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

Errors:

  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 机器,但没有成功。 但是,当我使用时,我能够在 Windows 上连接 PostgreSQLNode.JS 模块 pg https://www.npmjs.com/package/pg


1234.5679是客户端发送的特殊代码,用于请求 SSL 加密的数据库连接,并且 PostgreSQL 中已支持该代码提交 e0e7daef6da https://www.postgresql.org/message-id/flat/87h82kzwqn.fsf%40news-spur.riddles.org.uk1999 年。但是你的 PostgreSQL 不可能那么旧,因为在 2003 年之前还没有添加对协议版本 3.0 的支持。

其实从学习src/backend/postmaster/postmaster.c阅读邮件列表,这是 PostgreSQL 服务器上的一个错误:

客户端必须配置为尝试 GSS 身份验证,当服务器拒绝时,它想要协商 SSL 连接,但服务器此时不希望这样做;因此出现错误。

查看讨论here https://www.postgresql.org/message-id/flat/87h82kzwqn.fsf%40news-spur.riddles.org.uk。该错误已在 12.3 版本中修复。

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

在 psycopg2 中,禁用 SSL 是通过使用sslmode="disable"在连接字符串中,禁用 GSS 是通过以下命令完成的gssencmode="disable". See 文档 https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS了解详情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

psycopg2.OperationalError:致命:不支持的前端协议 1234.5679:服务器支持 2.0 到 3.0 的相关文章

随机推荐