Сервер MySQL исчез при импорте большого файла sql


Я попытался импортировать большой файл sql через phpMyAdmin...Но он продолжал показывать ошибку

'Сервер MySQL исчез'

Что делать?

Author: hims056, 2012-09-14

17 answers

Как указано здесь:

Две наиболее распространенные причины (и исправления) для сервера MySQL исчезли (ошибка 2006) являются:

Время ожидания сервера истекло, и соединение было закрыто. Как исправить:

  1. Убедитесь, что переменная wait_timeout в файле конфигурации my.cnf вашего mysqld достаточно велика. В Debian: sudo nano /etc/mysql/my.cnf, установите wait_timeout = 600 секунды (вы можете настроить/уменьшить это значение, когда ошибка 2006 исчезнет), затем sudo /etc/init.d/mysql restart. Я не проверял, но по умолчанию значение параметра wait_timeout может составлять около 28800 секунд (8 часов).

  2. Сервер сбросил неправильный или слишком большой пакет. Если mysqld получает слишком большой или неправильный пакет, он предполагает, что с клиентом что-то пошло не так, и закрывает соединение. Вы можете увеличить максимальный размер пакета, увеличив значение max_allowed_packet в моем файле.cnf. В Debian: sudo nano /etc/mysql/my.cnf, установите max_allowed_packet = 64M (вы можете изменить/уменьшить это значение, когда ошибка 2006 исчезнет), затем sudo /etc/init.d/mysql restart.

Редактировать: Обратите внимание, что в файлах опций MySQL нет уже доступных команд в виде комментариев (например, в php.ini). Таким образом, вы должны ввести любые изменения/настройки в my.cnf или my.ini и поместить их в каталог mysql/data или в любой из других путей в соответствующей группе параметров, таких как [client], [myslqd]... и т.д., например :
[mysqld]
wait_timeout = 600
max_allowed_packet = 64M
Затем перезапустите сервер. Чтобы получить их значения, введите консоль:
select @@wait_timeout;
select @@max_allowed_packet;

 327
Author: GBD, 2018-01-23 08:36:08

Для меня это решение не сработало, поэтому я выполнил

SET GLOBAL max_allowed_packet=1073741824;

В моем клиенте SQL.

Если вы не можете изменить это при запущенной службе MySQL, вам следует остановить службу и изменить переменную в файле "my.ini".

Например:

max_allowed_packet=20M
 81
Author: salsinga, 2015-08-14 19:57:32

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

Первый шаг, который я рекомендую, - это увеличить max_allowed_packet до 128 М.

Затем загрузите скрипт MySQL Tuning Primer и запустите его. Он предоставит рекомендации по нескольким аспектам вашей конфигурации для повышения производительности.

Также рассмотрите возможность настройки значений тайм-аута как в MySQL, так и в PHP.

Насколько велик (размер файла) ваш файл импорт и можете ли вы импортировать файл с помощью клиента командной строки mysql вместо phpMyAdmin?

 17
Author: Daemon of Chaos, 2012-09-14 13:24:46

Если вы работаете над XAMPP, то вы можете исправить проблему с удалением сервера MySQL со следующими изменениями..

Откройте свой файл my.ini расположение my.ini (D:\xampp\mysql\bin\my.ini)

Измените следующие значения переменных

max_allowed_packet = 64M
innodb_lock_wait_timeout = 500
 13
Author: Mohan Gathala, 2015-09-30 09:42:14

Если вы используете MAMP в OS X, вам нужно будет изменить значение max_allowed_packet в шаблоне для MySQL.

  1. Вы можете найти его по адресу: Файл > Редактировать шаблон> MySQL my.cnf

  2. Затем просто найдите max_allowed_packet, измените значение и сохраните.

Надеюсь, это кому-то поможет.

 7
Author: askthebigo, 2014-03-19 12:28:25

Я решил свою проблему с помощью этого короткого файла /etc/mysql/my.cnf:

[mysqld]
wait_timeout = 600
max_allowed_packet = 100M
 6
Author: Dan.faudemer, 2016-02-18 07:52:46

Другая причина, по которой это может произойти, - нехватка памяти. Проверьте /var/журнал/сообщения и убедитесь, что ваш файл my.cnf не настроен так, чтобы mysqld выделял больше памяти, чем есть на вашем компьютере.

Ваш процесс mysqld на самом деле может быть убит ядром, а затем перезапущен процессом "safe_mysqld" без вашего ведома.

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

Сделайте резервную копию файла my.cnf перед изменением это.

 5
Author: TekOps, 2013-06-30 06:25:12

У меня была эта ошибка и другие связанные с ней, когда я импортировал файл SQL объемом 16 ГБ. Для меня, отредактировав мой файл.ini и установив следующее (на основе нескольких разных сообщений) в разделе [mysqld]:

max_allowed_packet      = 110M
innodb_buffer_pool_size=511M
innodb_log_file_size=500M
innodb_log_buffer_size = 800M
net_read_timeout        = 600
net_write_timeout       = 600

Если вы работаете под управлением Windows, перейдите на панель управления, службы и просмотрите сведения о MySQL, и вы увидите, где находится файл my.ini. Затем, после редактирования и сохранения файла my.ini, перезапустите службу mysql (или перезагрузите компьютер).

Если вы используете HeidiSQL, вы также можете установить некоторые или все из них используют это.

 5
Author: BenV136, 2015-06-18 19:09:33

Если ваши данные включают BLOB данные:

Обратите внимание, что импорт данных из командной строки, похоже, захлебывается данными больших двоичных объектов, что приводит к ошибке "Сервер MySQL исчез".

Чтобы избежать этого, повторно создайте mysqldump, но с флагом --hex-blob:

Http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_hex-blob

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

В phpMyAdmin также есть опция "Вывод двоичных столбцов в шестнадцатеричной системе счисления (например, "abc" становится 0x616263)", которая отлично работает.

Обратите внимание, что существует давняя ошибка (по состоянию на декабрь 2015 года), которая означает, что столбцы GEOM не преобразуются: Создать резервную копию таблицы со столбцом ГЕОМЕТРИИ с помощью mysqldump? таким образом, использование такой программы, как phpMyAdmin, кажется единственным обходным путем (опция, отмеченная выше, правильно преобразует геометрические столбцы).

 2
Author: fooquency, 2017-05-23 10:31:34

Я обновил "max_allowed_packet" до 1024 м, но он все еще не работал. Оказывается, мой сценарий развертывания был запущен:

mysql --max_allowed_packet=512M --database=mydb -u root < .\db\db.sql

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

 1
Author: coderama, 2015-06-11 03:02:52

Если сбой занимает много времени, увеличьте переменную wait_timeout.

Если это сразу не сработает, увеличьте переменную max_allowed_packet; если она все еще не работает, убедитесь, что команда является допустимой SQL. У моего были неэкранированные цитаты, которые все испортили.

Также, если это возможно, рассмотрите возможность ограничения количества вставок одной команды SQL, скажем, до 1000. Вы можете создать сценарий, который создает несколько операторов из одного, повторно вводя часть INSERT... каждые n вставки.

 1
Author: emisilva, 2016-07-14 22:06:10

Я получил аналогичную ошибку.. чтобы решить эту проблему, просто откройте мой файл.ini.. здесь в строке №36 измените значение максимально допустимого размера пакета, т.е. max_allowed_packet = 20 м

 1
Author: parag jain, 2016-08-27 13:36:42

У меня была похожая ошибка сегодня при дублировании базы данных (сервер MySQL исчез...), но когда я попытался перезапустить mysql.перезапуск сервера, я получил ошибку

ERROR! The server quit without updating PID ...

Вот как я решил эту проблему: Я открыл Приложения/Утилиты/ и запустил Монитор активности

 quit mysqld

Затем удалось решить проблему с ошибкой с помощью

mysql.server restart
 0
Author: Kingsley Ijomah, 2014-09-29 19:24:09

Я выполняю некоторые большие вычисления, которые включают подключение к mysql, чтобы оставаться надолго и с большими данными. я столкнулся с этой проблемой "Mysql уходит". Поэтому я попытался оптимизировать запросы, но это не помогло мне, тогда я увеличил ограничение на переменные mysql, которое по умолчанию установлено на меньшее значение.

Wait_timeout max_allowed_пакет

До предела, который вам подходит, это должно быть любое число *1024(Байт). вы можете войти в терминал, используя 'mysql-u имя пользователя - команда p и может проверять и изменять эти ограничения переменных.

 0
Author: Ashish Dev swami, 2016-02-21 08:25:04

Убедитесь, что процесс mysqld не перезапускается из-за менеджеров служб, таких как systemd.

У меня была эта проблема в vagrant с centos 7. Настройки конфигурации не помогли. Оказалось, что это был systemd, который убивал службу mysqld каждый раз, когда она занимала слишком много памяти.

 0
Author: tvorog, 2018-03-28 12:26:21

Если увеличение max_allowed_packet не помогает.

Я получал ту же ошибку, что и вы, при импорте файла .sql в мою базу данных через Sequel Pro.

Ошибка все еще сохранялась после увеличения max_allowed_packet до 512M, поэтому вместо этого я запустил импорт в командной строке с помощью:

mysql --verbose -u root -p DatabaseName < MySQL.sql

Он выдал следующую ошибку:

ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled

Я нашел пару полезных вопросов о стековом потоке:

В моем случае мой файл .sql был немного поврежден или что-то в этом роде. Дамп MySQL, который мы получаем, состоит из двух zip-файлов, которые необходимо объединить вместе, а затем распаковать. Я думаю, что распаковка была прервана изначально, оставив файл с некоторыми странными символами и кодировками. Получение свежего дампа MySQL и его распаковка правильно сработали для меня.

Просто хотел добавить это здесь в случае, если другие обнаружат, что увеличение переменной max_allowed_packet не помогло.

 0
Author: Joshua Pinter, 2018-07-19 23:03:30

Для общего хостинга GoDaddy

В учетных записях общего хостинга GoDaddy сложно настроить файлы PHP.ini и т. Д. Однако есть и другой способ, и он просто отлично сработал для меня. (Я только что успешно загрузил текстовый файл 3,8 Мб.sql, содержащий 3100 строк и 145 столбцов. Используя команду ИМПОРТА в phpMyAdmin, я получал страшную ошибку Сервер MySQL исчез, и никакой дополнительной информации.)

Я обнаружил, что у Мэтта Бутчера был правильный ответ. Как и Мэтт, Я перепробовал все виды трюков, от экспорта баз данных MySQL небольшими порциями до написания сценариев, которые разбивают большой импорт на более мелкие. Но вот что сработало:

(1) ПАНЕЛЬ УПРАВЛЕНИЯ ---> ФАЙЛЫ (группа)---> РЕЗЕРВНОЕ КОПИРОВАНИЕ

(2a) В разделе "Частичные резервные копии"...
(2b) В разделе "Загрузка резервной копии базы данных MySQL"
(2c) Выберите свою базу данных и загрузите резервную копию (этот шаг необязателен, но разумен)

(3a) Справа от 2b, в разделе "Восстановление базы данных MySQL Резервное копирование"
(3b) Выберите.Файл импорта SQL с вашего локального диска
(3c) Истинное счастье будет твоим (скоро....) Мое заняло около 5 секунд

Я смог использовать этот метод для импорта одной таблицы. Ничто другое в моей базе данных не было затронуто - но это то, от чего шаг (2) выше предназначен для защиты.

Примечания:
a. Если вы не уверены, как создать файл импорта .SQL, используйте phpMyAdmin для экспорта таблицы и изменения этого файла структура.

ИСТОЧНИК: Статья Мэтта Мясника 2010 года

 -1
Author: gibberish, 2018-02-06 03:04:02