官方文档地址:B.3.2.3 Lost connection to MySQL server
此错误消息有三个可能的原因。
通常它表示网络连接有问题,如果这个错误经常发生,你应该检查一下你的网络状况。如果提示的错误消息包含"during query"
字符,那么您遇到的情况可能就是这种原因。
有时,当几百万行作为一个或多个查询的一部分被发送时,就会发生"during query"
表单。如果您知道发生了这种情况,那么您应该尝试将net_read_timeout
从默认的30
秒增加到60
秒或足以完成数据传输的更长时间。
更少见的情况是,当客户端试图初始化连接到服务器时,会发生这种情况。在这种情况下,如果connect_timeout
值被设置为几秒,那么您可以通过将其增加到10
秒来解决问题,如果您的连接距离很长或速度较慢,那么时间可能会更长。你可以通过查询Aborted_connects
来确定你是否正在经历这种更不常见的原因。服务器每中止一个初始连接尝试,它的值就会增加1
。如果错误消息包括"reading authorization packet"
,表明这正是您所需要的解决方案。
SHOW GLOBAL STATUS LIKE 'Aborted_connects'
如果原因不是以上所述的,你可能遇到了BLOB
值大于max_allowed_packet
的问题,这可能导致某些客户端出现此错误。有时你可能还会看到一个ER_NET_PACKET_TOO_LARGE
错误,可以确定是需要提高max_allowed_packet
值了。
SHOW VARIABLES LIKE '%max_allowed_packet%';