pymysql SSDictCursor AttributeError: ‘NoneType‘ object has no attribute ‘settimeout‘
原创
©著作权归作者所有:来自51CTO博客作者小龙在山东的原创作品,请联系作者获取转载授权,否则将追究法律责任
使用pymysql.cursors.SSDictCursor游标类,偶尔会报如下异常:
Exception ignored in: <bound method MySQLResult.__del__ of <pymysql.connections.
MySQLResult object at 0x036C7630>>
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\pymysql\connections.py", line
1152, in __del__
self._finish_unbuffered_query()
File "C:\ProgramData\Anaconda3\lib\site-packages\pymysql\connections.py", line
1261, in _finish_unbuffered_query
packet = self.connection._read_packet()
File "C:\ProgramData\Anaconda3\lib\site-packages\pymysql\connections.py", line
692, in _read_packet
packet_header = self._read_bytes(4)
File "C:\ProgramData\Anaconda3\lib\site-packages\pymysql\connections.py", line
729, in _read_bytes
self._sock.settimeout(self._read_timeout)
AttributeError: 'NoneType' object has no attribute 'settimeout'
解决方法:
改变MySQL服务器选项,增加值net_read_timeout
和max_allowed_packet
,
临时设置:
set global net_read_timeout = 200
set global max_allowed_packet=
查看结果:
SHOW VARIABLES LIKE '%net_read_timeout%'
https://dev.mysql.com/doc/refman/8.0/en/error-lost-connection.html