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
uj5u.com熱心網友回復:
port=22???mysql 默認埠是3306,
22是ssh的默認埠
uj5u.com熱心網友回復:
樓上是否使用了多執行緒,如果所有執行緒共享同一連接,每個execute之前請加上互斥鎖lock.acquire()
cursor.execute(command,data)
lock.release()
幾種解決方案:
1. 每個執行緒擁有自己的連接
2. 所有執行緒共用一個連接,加鎖互斥使用此連接
3. 所有執行緒共用一個連接池,需要考慮執行緒總數和連接池連接數上限的問題
uj5u.com熱心網友回復:
CaiNiaoWuZui是正解。 我也在遇到了這個問題,感謝CaiNiaoWuZui!
uj5u.com熱心網友回復:
CaiNiaoWuZui正解,我多執行緒操作DButils封裝的mysql連接池,也是出現錯誤,然后在現場中使用連接池前后加鎖和釋放鎖就可以了
uj5u.com熱心網友回復:
思路正確轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/279038.html
下一篇:sas啟動報錯
