导致 MySQL server has gone away
问题出现的最常见原因是服务超时跟连接已关闭。
默认情况下,当没有进行任何操作,MySQL 服务会在 8 小时之后关闭,通过在启动 mysqld 时设置 wait_timeout
变量可以改变这个时间限制,参考 “Server System Variables”。
我遇到这个问题是因为执行 sql 文件时,数据量过大的原因。这时候需要增大执行量,在启动 mysqld 时设置 max_allowed_packet
,默认是 1M
mysqld --max_allowed_packet=16M
也可以在配置文件如 my.ini 中的 [mysqld] 部分中添加
max_allowed_packet=16M
导致这个问题的原因有很多,比如
- 正在运行的线程被结束
- 尝试在关闭连接后进行查询操作
- 客户端 TCP/IP 连接超时
…