MySQL error 2006: сервер mysql исчез - PullRequest
206 голосов
/ 30 октября 2011

Я использую сервер в своем офисе, чтобы обработать некоторые файлы и сообщить результаты на удаленный сервер MySQL.

Обработка файлов занимает некоторое время, и процесс завершается на полпути со следующей ошибкой:

2006, MySQL server has gone away

Я слышал о настройке MySQL, wait_timeout , но мне нужно изменить это на сервере в моем офисе или на удаленном сервере MySQL?

Ответы [ 26 ]

326 голосов
/ 28 февраля 2012

Я сталкивался с этим несколько раз, и обычно я обнаружил, что ответом является очень низкая настройка по умолчанию max_allowed_packet.

Увеличение значения в /etc/my.cnf (ниже [mysqld]) до 8 или 16M обычно исправляет это.(По умолчанию в MySql 5.7 установлено значение 4194304, что составляет 4 МБ.)

[mysqld]
max_allowed_packet=16M

Примечание. Просто создайте строку, если она не существует

Примечание.установить на своем сервере, как он работает.

Использовать set global max_allowed_packet=104857600.Это устанавливает его на 100 МБ.

39 голосов
/ 17 октября 2013

У меня была та же проблема, но изменение max_allowed_packet в файле my.ini/my.cnf в [mysqld] помогло.

добавьте строку

max_allowed_packet = 500M

сейчас restart the MySQL service как только вы закончите.

31 голосов
/ 24 февраля 2016

Я использовал следующую команду в командной строке MySQL для восстановления базы данных MySQL, размер которой превышает 7 ГБ, и она работает.

set global max_allowed_packet=268435456;
31 голосов
/ 30 октября 2011

Может быть проще проверить, если соединение, и восстановить его при необходимости.

См. PHP: mysqli_ping для получения информации об этом.

15 голосов
/ 29 февраля 2012

В MAMP (не про версия) я добавил

--max_allowed_packet=268435456

до ...\MAMP\bin\startMysql.sh

Кредиты и более подробная информация здесь

15 голосов
/ 30 октября 2011

Ошибка: 2006 ( CR_SERVER_GONE_ERROR )

Сообщение: сервер MySQL пропал

Обычно вы можете повторить попытку подключения, а затем выполнить запрос еще раз, чтобы решить эту проблему - попробуйте 3-4 раза, прежде чем полностью сдаться.

Я предполагаю, что вы используете PDO. Если это так, то вы перехватите исключение PDO, увеличите счетчик и затем повторите попытку, если счетчик находится ниже порога.

Если у вас есть запрос, который вызывает тайм-аут, вы можете установить эту переменную, выполнив:

SET @@GLOBAL.wait_timeout=300;
SET @@LOCAL.wait_timeout=300;  -- OR current session only

Где 300 - это количество секунд, которое вы считаете максимальным временем, которое может занять запрос.

Дополнительная информация о том, как решать проблемы с подключением Mysql.

РЕДАКТИРОВАТЬ: две другие настройки, которые вы также можете использовать: net_write_timeout и net_read_timeout.

10 голосов
/ 16 января 2015

Эта ошибка возникает из-за истечения срока ожидания wait_timeout.

Просто зайдите на сервер MySQL и проверьте его wait_timeout:

mysql> ПОКАЗАТЬ ПЕРЕМЕННЫЕ, КАК 'wait_timeout'

mysql> set global wait_timeout = 600 # 10 минут или максимальное время ожидания вам нужно

http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html

9 голосов
/ 20 сентября 2016

Я получал эту же ошибку на моем сервере DigitalOcean Ubuntu.

Я пытался изменить настройки max_allowed_packet и wait_timeout, но ни один из них не исправил это.

Оказывается, на моем сервере не было оперативной памяти. Я добавил 1ГБ файл подкачки , и это решило мою проблему.

Проверьте вашу память с помощью free -h, чтобы увидеть, не в этом ли причина.

8 голосов
/ 16 октября 2015

В Windows те, кто использует xampp, должны использовать этот путь xampp / mysql / bin / my.ini и изменить max_allowed_packet (в разделе [mysqld]) на ваш размер по вашему выбору. * 1001 например *

max_allowed_packet=8M

Снова на php.ini (xampp / php / php.ini) измените upload_max_filesize размер выбора. * например 1004 *

upload_max_filesize=8M

Дала мне головную боль на некоторое время, пока я не обнаружил это. Надеюсь, это поможет.

7 голосов
/ 26 марта 2017

Это была проблема с ОЗУ.

У меня была такая же проблема даже на сервере с 12 ядрами ЦП и 32 ГБ ОЗУ.Я исследовал больше и попытался освободить оперативную память.Вот команда, которую я использовал в Ubuntu 14.04 для освобождения оперативной памяти:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

И все исправлено.Я установил его в cron для запуска каждый час.

crontab -e

0 * * * * bash /root/ram.sh;

И вы можете использовать эту команду, чтобы проверить, сколько свободного ОЗУ доступно:как это:

             total       used       free     shared    buffers     cached
Mem:           31G        12G        18G        59M       1.9G       973M
-/+ buffers/cache:       9.9G        21G
Swap:         8.0G       368M       7.6G
...