pymysql.err.InternalError:数据包序列号错误 - 预期为 45 0

Alm*_*itt 3 python mysql pymysql

我正在尝试通过 pymysql 连接到 mysql 数据库。当我通过终端通过 SSH 进入数据库时​​,一切正常。所以,这个信息是正确的。但是,当我在使用 pymysql 时输入相同的信息时,出现以下错误:

pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0
Run Code Online (Sandbox Code Playgroud)

pymysql 版本:0.9.2

代码(请注意,出于安全原因,我更改了有关主机、用户、密码、数据库和端口的信息)。

import pymysql.cursors

connection = pymysql.connect(host='myhost',
                             user='userid',
                             password='mypassword',
                             db='my_database',
                             charset='utf8mb4',
                             port=9047,
                             cursorclass=pymysql.cursors.DictCursor)

except Exception as e:
    print('connection failed')
    print(e)
Run Code Online (Sandbox Code Playgroud)

这段代码更早运行。我不得不为另一个项目升级包,现在它停止工作。我想这可能是原因。

有没有人遇到过这个?如果是这样,你是如何解决的?

谢谢!

*我也尝试过不同的端口。我在这里注意到他们使用了端口 22 或 3306,但是使用端口 22,我收到超时错误和端口 3306,我收到拒绝访问错误。

小智 6

我想原因是你一次使用多线程连接mysql,这里mysql服务器返回错误响应。

  • 感谢洛基的回复!知道如何修复它吗? (4认同)

Alm*_*itt 5

好吧,我明白了。

我只需要删除

cursorclass=pymysql.cursors.DictCursor
Run Code Online (Sandbox Code Playgroud)

现在可以了:)

感谢大家!

  • 我不明白更改光标类和删除 DictCursor 如何解决这个问题。您确定这是相关的还是您能解释一下吗?另外,现在您不使用 DictCursor...大多数人想要/需要。 (2认同)