pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0

pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0

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

pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0

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)

这段代码之前是有效的。我不得不为另一个项目升级包,现在它停止工作了。我想这可能是原因。

有没有人运行以前参与过这个?如果有,你是怎么解决的?

谢谢!

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

我认为原因是您使用多线程一次连接到 mysql,mysql 服务器 return 此处响应错误。

好的,我明白了。

我只需要删除

cursorclass=pymysql.cursors.DictCursor

现在可以了:)

谢谢大家!

在我的例子中错误是 “(pymysql.err.InternalError) 数据包序列号错误 - 预期得到 1 0\n(此错误的背景位于:http://sqlalche.me/e/14/2j85)”

数据库设置有问题 我分配了 IP 来访问同一台服务器。 但是在分配本地主机后它工作正常。

我在尝试连接到 mariadb RDS 实例时也遇到了以下错误:(pymysql.err.InternalError) 数据包序列号错误 - 得到 1 expected 0

我的问题是我的 IP 被数据库服务器阻止了。我在 5 分钟间隔的 cron 作业中连接失败 运行,数据库服务器在 100 次连接失败后阻止了我。

不幸的是,pymysql 驱动程序未能冒出正确的错误。使用官方的 mariadb 连接器我能够正确识别问题: sqlalchemy.exc.OperationalError: (mariadb.OperationalError) 主机 'XXX.XXX.XXX.XXX' 由于许多连接错误而被阻止;使用 'mysqladmin flush-hosts'

解锁

一旦我 运行 mysqladmin flush-hosts 在数据库服务器上一切都开始工作了。

希望我能从这种痛苦中拯救一两个可怜的灵魂!