Error 2006 mysql server has gone away

Error 2006 mysql server has gone away

Ошибка MySQL Server Has Gone Away (error 2006) может возникнуть в двух случаях:

  1. Соединение с MYSQL прерывается по таймауту, передача данных не успевает завершится в рамках сессии.
  2. Пакет, который передается слишком большой или некорректный

Решение с внесением изменений в файл /etc/mysql/my.cnf.

ВАРИАНТ 1 — Таймаут соединения С БД

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

Лучше всего выяснить почему такие запросы имеют место и оптимизировать их, но для того чтобы получить мгновенный результат нужно увеличить значение параметра wait_timeout. Значение задается в секундах и не может быть более 28800.

wait_timeout = 1000

После внесения любых изменений в конфигурационный файл перезапускаем MySQL

ВАРИАНТ 2 — СЛИШКОМ Большой пакет

Несколько другая ситуация имеет место когда сервер отклоняет пакет из-за его слишком большого размера (или в случае если сервер не может распознать пакет по той или иной причине). В логи при этом пишутся точно такие же сообщения.

Решение в этом случае практически такое же — необходимо скорректировать значение одной переменной в конфигурационном файле.

[mysqld]
max_allowed_packet = 96M

В примере задан максимальный размер пакета, который сервер не будет отвергать — 96 Мб. Устанавливать слишком большие значения не стоит.

Также перезапускаем MySQL

Поиск

Последние статьи

Рубрики

  • Apache (20)
  • AWS (10)
  • Bash (13)
  • CRON (5)
  • CSS / изображения (6)
  • DNS (8)
  • ELK (1)
  • FastCGI (4)
  • JS (6)
  • Memcached (1)
  • MongoDB (3)
  • MySQL (52)
  • Networking (43)
  • Nginx (39)
  • PHP (13)
  • Python (28)
  • Ruby (6)
  • Search (1)
  • Virtualization / Containers (27)
  • Базы данных (12)
  • Безопасность (25)
  • Высокие нагрузки (23)
  • Контроль версий (14)
  • Мониторинг (17)
  • Обзоры сервисов (23)
  • Оптимизация (1)
  • Ошибки (24)
  • Почтовые серверы (10)
  • Работа сайтов (17)
  • Распределенные системы (8)
  • Телефония (10)
  • Типовые задачи (54)
  • Ядро и ОС (23)
Читайте также:  Database error перевод на русский
Подключить мониторинг

Уведомления позволят узнать о проблемах на вашем сайте вперед клиентов

Эта статья может быть полезна тем, кто импортирует базы данных больших размеров на Denwer (либо на свой выделенный сервер). Допустим, размер Вашей базы 50 МБ. Просто через вставку запроса в phpMyAdmin в разделе "SQL" ничего не выйдет — браузер просто повиснет. Поэтому единственный выход — использовать импорт SQL-файла. Но тут Вас будет поджидать ошибка #2006 или server has gone away. Вот о решении этой проблемы я и расскажу в этой небольшой статье.

Самое первое, что Вы должны сделать — это настроить PHP для загрузки файлов больших размеров. Без этого по умолчанию Вы вообще не сможете загружать файлы размером, например, 50 МБ.

Дальше необходимо зайти в настройку MySQL (на Denwer это "usrlocalmysql-5.5my.ini") и там поменять значение параметра "max_allowed_packet" на, например, 100M, что соответствует 100 МБ:

После всего этого перезапустите MySQL (либо Denwer), и больше ошибки 2006 или server has gone away возникать не будет. Если, конечно, Вы не захотите импортировать базу данных размером 150 МБ, тогда придётся снова увеличивать необходимые параметры в настройках PHP и MySQL.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Читайте также:  Dsg 5737 коды ошибок

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 4 ):

    Очень познавательная статья! Рекомендую новичкам.

    На денвере можно иvпортить через Mysql.exe, в командной строке

    Михаил, спасибо! Помогло 🙂

    Михаил если 3 гб? там все же выводится такая ошибка (( указал =3072М и перезагрузил денвер

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2019 Русаков Михаил Юрьевич. Все права защищены.

    Последнее изменение: 17.01.2018 6312

    Две наиболее распространенные причины получения ошибки MySQL server has gone away (error 2006) это..

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

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

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

    и установить wait_timeout = 600 ( значение задается в секундах, если ошибка не пропадет поиграйтесь с этим значением, чтобы найти оптимальное), после этого нужно рестартануть MySQL:

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

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

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

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

    Ссылка на основную публикацию
    Adblock detector