求大神python的mysql 的pymysql.err.InternalError: Packet sequence number wrong - got 4

zlsd21 2017-09-16 11:35:58
pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0
这个错误困扰我很久
代码:
import pymysql
#连接数据库
conn = pymysql.connect(host='192.168.60.128',port= 22,user = 'root',passwd='123456',db='mysql') #db:库名
#创建游标
cur = conn.cursor()
#插入一条数据
# reCount = cur.excute('insert into lcj(name,age) vaules(%s,%s)',('ff',18))
#向test库中的lcj表插入
# ret = cur.executemany("insert into lcj(name,tel)values(%s,%s)", [("kk",13212344321),("kw",13245678906)])
#同时向数据库lcj表中插入多条数据
ret = cur.executemany("insert into lcj values(%s,%s,%s,%s,%s)", [(41,"xiaoluo41",'man',24,13212344332),
(42,"xiaoluo42",'gril',21,13245678948),
(43,"xiaoluo43",'gril',22,13245678949),
(44,"xiaoluo44",'main',24,13543245648)])
#提交
conn.commit()
#关闭指针对象
cur.close()
#关闭连接对象
conn.close()
#打印结果
print(ret)
~
错误Traceback (most recent call last):
File "C:/PycharmProjects/s14/day12/begin_pymysql.py", line 3, in <module>
conn = pymysql.connect(host='192.168.60.128',port= 22,user = 'root',passwd='123456',db='mysql') #db:库名
File "C:\Python\Python36\lib\site-packages\pymysql\__init__.py", line 90, in Connect
return Connection(*args, **kwargs)
File "C:\Python\Python36\lib\site-packages\pymysql\connections.py", line 688, in __init__
self.connect()
File "C:\Python\Python36\lib\site-packages\pymysql\connections.py", line 905, in connect
self._get_server_information()
File "C:\Python\Python36\lib\site-packages\pymysql\connections.py", line 1207, in _get_server_information
packet = self._read_packet()
File "C:\Python\Python36\lib\site-packages\pymysql\connections.py", line 968, in _read_packet
(packet_number, self._next_seq_id))
pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0

...全文
4830 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Skyler_Fly 2021-06-24
  • 打赏
  • 举报
回复

2楼说的方法我自己试了是没有用的。分享下我本机的经验,我们是内网环境,主机地址的格式是有特殊定义的,比如正常的是172.34.22.1,我们的主机地址是 mysql_172.34.22.1,前边多了个前缀。希望能帮到他人。

  • 打赏
  • 举报
回复
引用 2 楼 CaiNiaoWuZui 的回复:
楼上是否使用了多线程,如果所有线程共享同一连接,每个execute之前请加上互斥锁 lock.acquire() cursor.execute(command,data) lock.release() 几种解决方案: 1. 每个线程拥有自己的连接 2. 所有线程共用一个连接,加锁互斥使用此连接 3. 所有线程共用一个连接池,需要考虑线程总数和连接池连接数上限的问题
思路正确
落水铅华 2019-04-18
  • 打赏
  • 举报
回复
CaiNiaoWuZui
正解,我多线程操作DButils封装的mysql连接池,也是出现错误,然后在现场中使用连接池前后加锁和释放锁就可以了
Wu_Charles 2019-03-27
  • 打赏
  • 举报
回复
CaiNiaoWuZui 是正解。 我也在遇到了这个问题,感谢CaiNiaoWuZui!
CaiNiaoWuZui 2017-10-27
  • 打赏
  • 举报
回复 7
楼上是否使用了多线程,如果所有线程共享同一连接,每个execute之前请加上互斥锁 lock.acquire() cursor.execute(command,data) lock.release() 几种解决方案: 1. 每个线程拥有自己的连接 2. 所有线程共用一个连接,加锁互斥使用此连接 3. 所有线程共用一个连接池,需要考虑线程总数和连接池连接数上限的问题
ckc 2017-09-17
  • 打赏
  • 举报
回复 2
port=22??? mysql 默认端口是3306, 22是ssh的默认端口

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧