2011-11-24 78 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> 
相關問題