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



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




'сервер MySql ушел'




Что делать?

877   17  

17 ответов:

как заявил здесь:

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

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

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

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

Edit: обратите внимание, что файлы опций 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;

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

SET GLOBAL max_allowed_packet=1073741824;

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

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

например:

max_allowed_packet=20M

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

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

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

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

Как большой (размер файла) - это файл, который вы импортируете, и вы можете импортировать файл с помощью клиента командной строки mysql вместо PHPMyAdmin?

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

откройте свой my.ini-файл мой.ini location is (D:\xampp\mysql\bin\my.ini)

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

max_allowed_packet = 64M
innodb_lock_wait_timeout = 500

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

  1. Вы можете найти его в: File > Edit template > MySQL my.cnf

  2. тогда просто найдите max_allowed_packet измените значение и спасать.

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

Я решил свою проблему с этим коротким /etc/mysql / my.cnf file:

[mysqld]
wait_timeout = 600
max_allowed_packet = 100M

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

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

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

сделать резервную копию.cnf прежде чем менять его.

У меня была эта ошибка и другие связанные с ней, когда я импортировал в 16 ГБ SQL-файл. Для меня, редактирование моего.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, и вы увидите, где мой.Ини есть. Затем после редактирования и сохранения моего.ini, перезагрузите службу mysql (или перезагрузите компьютер).

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

если ваши данные содержат BLOB данные:

обратите внимание, что импорт данных из командной строки, похоже, задыхается от данных BLOB, что приводит к ошибке "MySQL server has gone away".

чтобы избежать этого, воссоздайте 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, кажется единственным обходным путем (опция, отмеченная выше, правильно преобразует GEOM столбцы.)

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

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

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

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

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

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

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

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

ERROR! The server quit without updating PID ...

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

 quit mysqld

затем удалось решить проблему ошибки с

mysql.server restart

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

wait_timeout max_allowed_packet

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

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

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

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

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

ошибка все еще сохраняется после повышения max_allowed_packet до 512M поэтому я запустил импорт в командной строке вместо:

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

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

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

я нашел пару полезных вопросов StackOverflow:

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

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

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

на учетных записях общего хостинга GoDaddy сложно настроить PHP.Ини файлов. Однако есть и другой способ, и он просто отлично работал для меня. (Я только что успешно загрузил 3.8 Мб .текстовый файл sql, содержащий 3100 строк и 145 cols. Используя команду импорта в phpMyAdmin, я получал страшное сервер MySQL ушел ошибки, и никакой дополнительной информации.)

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

(1) CPANEL ---> файлы (группа) ---> резервное копирование

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

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

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

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

источник: Мэтт Мясник 2010 Статья

Comments

    Ничего не найдено.