Servers

MySQL server has gone away (error 2006)

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

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

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

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

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

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

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

    Так же такое происходит, когда у Вас слишком большой запрос. Например, вы хотите в поле типа longtextзаписать какую-нибудь книгу, в которой текста на 20 мб. Либо хотите сохранить большой файл (например картинку) в поле с типом blob. В итоге у вас получается запрос по типу

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


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

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

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

Про max_allowed_packet я так же писал здесь: ERROR 2006 (HY000) — MySQL server has gone away

Если Вы получаете ошибку MySQL server has gone away (error 2006) при использовании драйвера MySQL ODBC – можете попробовать это решение.

Оригинал исходной статьи (на англ): How to fix “MySQL server has gone away” (error 2006)

Добавить комментарий

Ваш e-mail не будет опубликован.