2011-11-24 76 views
5

我想在Django环境中应对MySQL的错误MySQL server has gone away有意地得到一个“MySQL服务器已经消失”的错误

快速解决方法是将全局wait_timeout MySQL variable设置为一个巨大的值,但从长远来看,这会积累到许多开放连接。

我想我会得到wait_timeout变量,并以较小的间隔轮询服务器。执行此操作后,我尝试测试它,但未能得到该错误。

I set global wait_timeout=15甚至set global interactive_timeout=15但连接拒绝消失。我确定我正在以大于15秒的间隔轮询数据库。

可能导致无法重新创建此错误的原因是什么?

+2

+1想要测试错误条件。 – vidstige

回答

4

运行下面脏兮兮的脚本并测试你的django项目或其他什么。我认为这不是一个优雅的方法,但它运作良好。

<?php 
mysql_connect("127.0.0.1", "id", "pw"); // should be changed to yours 
while(1) 
{ 
    $r = mysql_query("SHOW PROCESSLIST"); 
    while($d = mysql_fetch_row($r)) 
    { 
     if($d[7] != "SHOW PROCESSLIST") 
     { 
      mysql_query("KILL ". $d[0]); 
      echo($d[0]." was killed.\n"); 
     } 
    } 
} 
?> 

这就是结果。

mysql> select * from foo; 
ERROR 2006 (HY000): MySQL server has gone away 
No connection. Trying to reconnect... 
Connection id: 337 
Current database: test 

ERROR 2006 (HY000): MySQL server has gone away 
No connection. Trying to reconnect... 
Connection id: 338 
Current database: test 

ERROR 2006 (HY000): MySQL server has gone away 
mysql> 
相关问题