Получение ошибки 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.