Ошибка error 2006 MySQL server has gone away - решение

Опубликовано:
Просмотров: 1025
0
Голосов: 0
Так получилось что при импорте базы данных, я стал получать ошибку. Потратил почти сутки, искал вероятные решения проблемы, но ошибка оставалась. Пришлось покопаться более глуюже, чтобы понять в чем тут дело. Ошибка касалась импорта данных в базу данных phpmysql и выглядела так: MySQL server has gone away (error 2006). Что это за ошибка, откуда она берется и как её решить, в этом материале.


Суть этой ошибки: Сервер закрыл соединение по таймауту.

Исправить можно так: проверить чтобы значение переменной wait_timeout в конфиг файле MySql - my.cnf было достаточным для выполнения скрипта.

На Debian: нужно выполнить

sudo nano /etc/mysql/my.cnf
и установить wait_timeout = 600 или 6000 ( значение задается в секундах, если ошибка не пропадет поиграйтесь с этим значением, чтобы найти оптимальное), после этого нужно рестартануть MySQL:

sudo /etc/init.d/mysql restart

Я не проверял, но значение по-умолчанию для wait_timeout можно установить вплоть до 28800 секунд (8 часов).

Сервер сбрасывает (отклоняет) неправильные или слишком большие пакеты. Если mysqld получает пакет данных, который слишком большой или не корректный, он думает что что-то пошло не так или с клиентом случилась какая-то беда и закрывает соединение. Часто такая ошибка возникает при импорте дампов содержащих большие тексты.

Исправить можно так: вы можете увеличить максимальный размер пакета увеличив значение max_allowed_packet в файле my.cnf.

На Debian:нужно выполнить:

sudo nano /etc/mysql/my.cnf

и установить max_allowed_packet = 64M (если ошибка не пропадет поиграйтесь с этим значением, чтобы найти оптимальное), после этого нужно рестартануть MySQL


Код PHP:
  1. sudo /etc/init.d/mysql restart
Можно просто зайти в /etc/ и найти файл my.cnf - в нем изменить таймаут и размер пакеты на более большие, чтобы ошибки не возникало.
Комментарии (0)

Нет комментариев. Ваш будет первым!

Голосуем

Самый нужный компонент