Python 读取通信数据包时出错
我正在试图找出为什么从Python访问MySQL时偶尔会出现以下错误:Python 读取通信数据包时出错,python,mysql,Python,Mysql,我正在试图找出为什么从Python访问MySQL时偶尔会出现以下错误: 2018-02-13T10:28:22.4616239Z 137675 [Note] Aborted connection 137675 to db: 'unconnected' user: 'username' host: '132.20.21.10' (Got an error reading communication packets) 可能的原因,根据文件: 客户端程序在退出之前没有调用mysql_clos
2018-02-13T10:28:22.4616239Z 137675 [Note] Aborted connection 137675 to
db: 'unconnected' user: 'username' host: '132.20.21.10' (Got an
error reading communication packets)
可能的原因,根据文件:
- 客户端程序在退出之前没有调用mysql_close()
- 客户端在未向服务器发出任何请求的情况下已休眠超过等待超时或交互超时秒。参见第5.1.5节“服务器系统变量”
-
客户端程序在数据传输过程中突然终止。
- max_allowed_数据包变量值太小,或者查询需要的内存比您为mysqld分配的内存多。见第B.5.2.9节“数据包过大”
- 线程库的一个问题,导致读取时中断
- TCP/IP配置不正确。故障以太网、集线器、交换机、电缆等。只有更换硬件才能正确诊断此问题。 在Linux上使用以太网协议,包括半双工和全双工
def execute(self, query):
try:
connection = self.pool.connect()
cursor = connection.cursor()
cursor.execute(query)
data = cursor.fetchall()
return data
finally:
connection.close()
return data
游泳池的初始设定如下:
import MySQLdb
import sqlalchemy.pool as pool
def __init__(self, config, logging_name=None):
def getconn():
c = MySQLdb.connect(host=config.host, port=int(config.port), user=config.user,password=config.password,charset='UTF8')
return c
self.pool = pool.QueuePool(getconn, logging_name=logging_name)
请发布您的finally:代码块,以便我们查看您的序列。非常感谢@WilsonHauck对您的帮助!该数据库由两个应用程序使用,只有python应用程序导致错误。我将finally代码添加到原始文章中。FETCHALL需要收集多少字节计数?您是否愿意在4月2日第一次请求时提供任何其他信息?而不是问10个问题来获取信息,我们需要考虑可能的原因。这个链接可能有一个线索,在用户评论(接近尾声)。你的connection.close()是否等同于mysql\u close()-因为这个问题只是偶尔出现的,这可能与此无关。谢谢@WilsonHauck,connection\u close()实际上并不等同于mysql\u close()。它使用一个sqlalchemy池——我将检查它在没有它的情况下的行为,并更新这个线程。