发生MySQL server has gone away的最常见原因是连接闲置超时,被服务器中断连接。默认情况下,服务器关闭空闲时间超过8小时的连接,可以通过设置变量wait_timeout,来改变默认值8小时,同时还需要修改interactive_timeout。
wait_timeout:服务器关闭非交互连接之前等待活动的秒数。
interactive_timeout:服务器关闭交互式连接前等待活动的秒数
MySQL命令行默认是重连的,但有一些应用程序没有重连的机制,往往会导致执行失败。
导致MySQL server has gone away错误的一些其他原因如下:
(1).使用KILL命令或mysqladmin kill命令杀死了正在运行的线程
(2).在关闭了与服务器的连接后试图运行查询
(3).在客户端的一侧遇到TCP/IP连接超时错误
(4).在服务器端遇到超时错误,而且禁止了客户端中的自动连接机制
(5).如果向服务器发出了不正确或过大的查询,也会遇到这类问题,如果mysqld收到过大的或者无序的信息包,它会认为客户端出错并关闭连接。如果需要执行较大的查询,则可以通过设置服务器的max_allowed_packet
变量,增加查询限制值,该变量的默认值是1MB。