MySQL сервер ушел, PDO и max_allowed_packet в PHP

Знаете ли вы, как избежать следующего фатального сообщения об ошибке:

"...Сервер MySQL ушел".

Я предполагаю, что это означает, что соединение PDO с MySQL было потеряно.

я проверил MySQL max_allowed_packet переменная, равная 268435456 (думаю, этого значения более чем достаточно).

3 ответа

Решение

Спасибо за ваши ответы. После нескольких дней исследований я решил сбросить соединение MySQL PDO каждые 250 секунд. Я знаю, что это не лучшее в своем классе решение, но, по крайней мере, это решение, позволяющее избежать проблемы.

Нет способа "избежать" этой ошибки. Эта ошибка происходит, когда вы теряете соединение с сервером БД. Это может произойти по разным причинам. Наиболее распространенная причина MySQL server has gone away ошибка в том, что сервер отключил тайм-аут и закрыл соединение.

Некоторые другие общие причины:

  • Вы (или администратор БД) убили работающий поток.
  • Вы попытались выполнить запрос после закрытия соединения с сервером.
  • Вы получили тайм-аут из соединения TCP/IP на стороне клиента.
  • Вы столкнулись с таймаутом на стороне сервера, и автоматическое переподключение на клиенте отключено.
  • И больше.

Проверьте эту ссылку из документации MYSQL для получения дополнительной информации.

Вы можете проверить max_connections и убедиться, что они не достигнуты - это наиболее распространенная причина, которую я помню, чтобы вы получили эту ошибку.

Другие вопросы по тегам