Преднамеренно получить сообщение об ошибке «Сервер MySQL ушел» - PullRequest
6 голосов
/ 24 ноября 2011

Я пытаюсь справиться с ошибкой MySQL MySQL server has gone away в django env.

Быстрый обходной путь - установить глобальную wait_timeout переменную MySQL до огромного значения, но в долгосрочной перспективе это накапливается для многих открытых соединений.

Я подумал, что получу переменную wait_timeout и опрошу сервер через меньшие интервалы.После реализации этого я попытался проверить это, но не смог получить ошибку.

I set global wait_timeout=15 и даже set global interactive_timeout=15, но соединение отказывается исчезать.Я уверен, что опрашиваю базу данных с большими интервалами, чем 15 секунд.

Что может быть причиной невозможности воссоздать эту ошибку?

1 Ответ

4 голосов
/ 27 ноября 2011

Запустите ниже грязный и быстрый скрипт и протестируйте ваш проект 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> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...