Получение ошибки MYSQL: "Код ошибки: 2006 - сервер MySQL исчез"

Я получаю следующее сообщение об ошибке при попытке импортировать базу данных MYSQL:

Error Code: 2013 - Lost connection to MySQL server during queryQuery:
Error Code: 2006 - MySQL server has gone away

Может кто-нибудь сообщить мне, что не так?

14 ответов

Решение

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

Из документов:

Самая распространенная причина того, что MySQL-сервер исчез из-за ошибки, заключается в том, что сервер отключил тайм-аут и закрыл соединение

Исследование показывает, что многие решения правильно говорят об установке max_allowed_packet и wait_timeout для mysql в my.cnf; Небольшое дополнение о том, что по умолчанию установка mysql на Mac OSX не включает этот файл. Сначала вам может понадобиться создать его в /etc/my.cnf (это проблема, только если вы используете установленную по умолчанию mysql вместо стека mamp или аналогичного)

Содержание /etc/my.cnf, которое исправило эту проблему для меня ниже:

[mysqld]
max_allowed_packet= 64M
wait_timeout= 6000

Это часто происходит, если ваш запрос INSERT представляет собой слишком большой однострочный оператор с несколькими строками.

Попробуйте перезапустить сервер MySQL. Возможно, сервер работает некорректно, но также отображается и запущенное средство уведомления sql.

Попробуйте следующие исправления ошибок 2006:

  • Тайм-аут сервера и соединение закрыто. Как это исправить: проверьте, что переменная wait_timeout в конфигурационном файле my.cnf вашего mysqld достаточно велика.

  • Сервер сбросил неверный или слишком большой пакет. Если mysqld получает слишком большой или неправильный пакет, он предполагает, что с клиентом что-то не так, и закрывает соединение. Вы можете увеличить максимальный размер пакета, увеличив значение max_allowed_packet в файле my.cnf.

Я перепробовал все решения и ничего не получалось
Я использую верстак для удаленного подключения hostgator
Я понял, что mysql server hostgator был версией 5.5 и в моей рабочей среде установлен до версии 5.6
когда я установил верстак на 5,5 он начал работать

редактировать / предпочтения /mysql/ целевая версия по умолчанию
введите описание изображения здесь

Вот альтернатива редактированию my.cnf файл. Вы можете установить значение глобальных переменных MySQL, войдя на сервер MySQL.

Вы можете проверить список всех глобальных переменных MySQL и их значения с помощью следующей команды:

$> mysqladmin variables -u YourMysqlUsername -p

Вы также можете проверить значение этих переменных, сначала войдя на сервер MySQL:

$> mysql -u YourMysqlUsername -p

mysql> SHOW VARIABLES;

Чтобы проверить конкретное значение переменной:

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';

Чтобы устранить ошибку MySQL Server Gone Away, вам нужно увеличить значение max_allowed_packet переменная.

mysql> SET GLOBAL max_allowed_packet=1072731894;
mysql> quit

Теперь, когда вы снова входите в MySQL и проверяете max_allowed_packet значение, вы должны увидеть обновленное значение.

$> mysql -u YourMysqlUsername -p

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1072731136 |
+--------------------+------------+
1 row in set (0.00 sec)

Покажите свои переменные mySql

  • показывать переменные вроде 'max%'

  • установить глобальный max_allowed_packet={PacketRANGE}; // вот так 10485760;

  • показать глобальные переменные, такие как 'max_all%';

Наслаждайтесь вашим кодированием здесь

В MySQL 5.7 эта ошибка может быть вызвана слишком большим коммуникационным пакетом:

Когда клиент MySQL или сервер mysqld получают пакет, размер которого превышает байты max_allowed_packet, он выдает ошибку ER_NET_PACKET_TOO_LARGE и закрывает соединение. С некоторыми клиентами вы можете также получить потерянное соединение с сервером MySQL во время ошибки запроса, если коммуникационный пакет слишком велик.

Пакет в MySQL это:

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

Вы можете найти документ здесь: DOC
Вы должны попытаться установить для max_allowed_packet большее значение (значение по умолчанию - 4 МБ), чтобы определить, превышает ли ваш сценарий SQL этот размер. Вы можете установить это значение в файле опций, чтобы вам не приходилось настраивать его каждый раз.
В Microsoft Windows Vista и выше вы можете установить max_allowed_packet в файл
%PROGRAMDATA%\MySQL\MySQL Server 5.7\my.ini
или же
%PROGRAMDATA%\MySQL\MySQL Server 5.7\my.cnf

где PROGRAMDATA = C:\ProgramData
Больше информации (также для других ТАК) ЗДЕСЬ

Есть много причин, по которым эта проблема возникает с вами, здесь вы можете найти все возможные причины, лично я боролся с размером пакета, но я обновил свой файл my.ini, но прежде чем сделать это, я ' я проверил переменную max_allowed_packet, которая дала мне 1048576B = 1 МБ, и я обновил до 5 МБ. покажите переменные, где переменная_имя, например, "%package%"

выберите 1048576 / 1024 / 1024

выберите 5242880 / 1024 / 1024

Я обнаружил, что это часто происходит в My SQL с использованием MySQL Workbench 8.0, когда я пытаюсь добавить столбец в конец моей таблицы. Кроме того, таблица блокируется и становится непригодной для использования. Попытка уронить стол не сработает до дня или двух. Однако я обнаружил, что не вижу проблем, когда вставляю новый столбец между существующими столбцами...

Иногда это случается, когда те, кто находится на вашем сервере, отключены, и вы используете соединение MySQL, оно было создано до смены пароля. Поэтому вам следует создать новое соединение и использовать практику SQL после изменения пароля сервера.

Если ваш запрос INSERT представляет собой слишком большой однострочный оператор с несколькими строками.

Как упомянул Тудор в своей реакции:

 The most common reason for the MySQL server has gone away error is that the 
 server timed out and closed the connection

Вам нужно изменить максимальное время выполнения и размер, вы можете использовать следующие команды для этого:

SET GLOBAL wait_timeout = 6000;
SET GLOBAL max_allowed_packet= 64M;

Это команды sql, поэтому вы можете выполнять их как команды noramal.

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