ОШИБКА:MySQL server has gone away

MySQL server has gone away

Такая ошибка выдается, если долгое время не производится работы с открытым соединением с базой данных MySQL. Например, в случае чтения файла большого размера и разбора его в структуру.

Вариантов решения данной проблемы несколько:


  1. Поиграться с таймаутами, если есть доступ к изменению параметров.
  2. В случае появления такой ошибки производить повторное соединение, например, с помощью какой то своей функции reconnect().
  3. Реализовать асинхронное тестирование соединения с базой данных, чтобы соединение не отваливалось.

Реализация последнего варианта на языке Perl (DBI, DBD::mysql) в среде Linux возможно через сигнал SIGALRM:

$SIG{ALRM} = sub {
 warn("DEBUG: SIGALRM: ping ...") if ($ENV{DEBUG});
 unless ($dbh->ping()){
   die("ERROR: SIGALRM: Ping is undef. Need reconnect.\n");
 }
 alarm(3);
};
alarm(3);

0 комментариев

Оставить комментарий

Комментировать при помощи:
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.