MySQL server has gone away 问题的解决方法
2018-03-09 18:48
393 查看
MySQL server has gone away 问题的解决方法系统升级,做数据迁移,把3个数据库的数据合并到另外一台服务器上,用的PHP脚本,刚执行了1s就停下来了,报了这个PDO::prepare(): MySQL server has gone away错误。1.mysql连接超时即某个mysql长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。此后再通过这个connection发起查询的时候,就会报错server has gone away(大部分PHP脚本就是属于此类)mysql> show global variables like '%timeout';
2.Your SQL statement was too large.
当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)修改参数:mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)我这里设置了max_allowed_packet参数,就可以正确执行了。
+----------------------------+----------+ | Variable_name | Value | +----------------------------+----------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 28800 | | lock_wait_timeout | 31536000 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | wait_timeout | 28800 | +----------------------------+----------+ 10 rows in setwait_timeout 是28800秒,即mysql链接在无操作28800秒后被自动关闭。我看了下,时间足够了,不是这个原因。
2.Your SQL statement was too large.
当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)修改参数:mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)我这里设置了max_allowed_packet参数,就可以正确执行了。
相关文章推荐
- MySQL server has gone away问题解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away 问题的解决方法
- #2006 - MySQL server has gone away 问题解决方法
- MySQL server has gone away 问题的解决方法
- #2006 - MySQL server has gone away 问题解决方法
- #2006 - MySQL server has gone away 问题解决方法
- #2006 - MySQL server has gone away 问题解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away问题解决方法
- MySQL server has gone away 问题的解决方法
- #2006 - MySQL server has gone away 问题解决方法
- MySQL server has gone away 问题的解决方法
- MySQL server has gone away 问题的解决方法
- #2006 - MySQL server has gone away 问题解决方法