MySQL server has gone away

今天用phpmyadmin导入数据库数据,由于数据库文件稍大一些足有三四十兆,导入时直接出现内存分配不足的fatal error。不得不用命令行导入恢复数据库:mysql -u user -p pass database<data.sql 结果,出现了奇怪的“MySQL server has gone away”。网上搜索了一下,需要修改一下mysql的配置文件。

针对这种情况的出现的成因有两种:

1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。可以通过修改配置文件添加上

wait_timeout=2880000
interactive_timeout = 2880000
延长执行和交互时间,如果不能直接修改mysql.conf,也可以在执行sql文件中最前面加一句”set interactive_timeout=24*3600″,将执行时间延长。

2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。需要设置一下“通信缓冲区的最大长度”

max_allowed_packet = 100M

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Protected by WP Anti Spam