ERROR 2006 (HY000) at line ***: MySQL server has gone away 对策

原因分析:
1.执行批量的MYSQL语句,例如备份恢复的时候,时间过长。
对应:修改my.cnf中的wait_timeout和interactive_timeout变量
在一些不便修改的情形下,如租用的空间,可以采取sql语句修改,如何做呢?

#对当前交互链接有效;
mysql>set wait_timeout = someIntValue;
#对后续起的交互链接有效;
mysql>set interactive_timeout = someIntValue;



当然此处也可进行一些变量的设定
我们应当保持良好的习惯,操作完毕后 恢复原值。

2.SQL语句过大或者语句中含有BLOB类似字段
对应:修改my.cnf中的 max_allowed_packet变量

对应于windows是my.ini 一般在mysql的安装目录下,改正完毕后都不要忘记对mysql服务进行重启。
以上变量的位置是在[mysqld]下面,而不是在[mysql]下面

除此之外,可能还有一些别的buffer_size的变量会影响到,也值得注意
例如
read_buffer_size
read_rnd_buffer_size
等等

我目前遇见的问题主要是blob的size问题,可能数据量的大小还不足与导致超时。

至于这些时间限制的默认参数是多少(有时候并不写明在my.cnf中),可通过以下查看:
mysql> show variables like '%timeout'
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| connect_timeout | 5 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+--------------------------+-------+

时间单位是秒 :-)

你可能感兴趣的:(sql,windows,mysql,.net,SQL Server)