MySQL报错导入数据报错[ERR]2006 - MySQL server has gone away
,出现这个问题,大概有几个原因
1. MySQL服务器挂掉了
- 可以去看MySQL的日志验证,这个可能性不大,也没有遇到过,暂时跳过。
2. MySQL请求被主动kill干掉
3. MySQL连接超时
- MySQL长连接很久没有新的请求发起,MySQL server端发现长期没有接到新的请求,主动关闭了连接。之后再通过这个连接发起请求的时候,就会报错。
- 查看
wait_timeout
的值。
1 2 3 4 5 6 7
| mysql> show global variables like 'wait_timeout'; + | Variable_name | Value | + | wait_timeout | 28800 | + 1 row in set (0.00 sec)
|
- 可以看到超时时间是28800秒,即MySQL的链接在无操作28800秒后会被自动关闭。可以修改该数据。
1
| set global wait_timeout=28801;
|
4. 传送的数据太大,例如使用insert
语句过长,这种情况可以通过修改max_allowed_packed
的配置参数来避免。
1 2 3 4 5 6 7
| mysql> show global variables like 'max_allowed_packet'; + | Variable_name | Value | + | max_allowed_packet | 67108864 | + 1 row in set (0.00 sec)
|
- 可以看到最大是允许64M的数据,可以修改成自己需要的值。
1
| set global max_allowed_packet=134217728;
|
- 注意:通过在命令行中进行设置只对当前有效,重启MySQL服务之后则会恢复默认值。