«Сервер MySQL пропал» при попытке импортировать большой файл дампа

11

Я пытаюсь импортировать файл дампа MySQL.

Файл был создан на сервере Linux, я пытаюсь импортировать на Windows

Я вошел в командную строку и запустил:

SOURCE c:/dump.sql

Но это, кажется, вызвало некоторые проблемы с набором символов (особенно с умными кавычками и другими нестандартными пунктуациями).

Мне было предложено запустить:

mysql -u username -d dbase < c:\dump.sql

Когда я пытаюсь это сделать, я получаю ошибку

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

Немного погуглив, я предположил, что это связано с переключателем max_allowed_packet, но я пробовал это, и это не сработало. Кто-нибудь знает, что это может быть?

Если у кого-то есть предложения по поводу набора символов, это тоже будет полезно.

Джереми Френч
источник
Есть отзывы? [15 символов необходимо комментировать]
Михай Лимбашан

Ответы:

23

Мой первый инстинкт после прочтения сообщения об ошибке в заголовке вопроса состоял в том, чтобы предложить увеличить max_allowed_packet. Вы упомянули, что пытались «это переключить», и это не сработало. Можете ли вы подтвердить, что вы правильно изменили файл конфигурации сервера? Ваша фраза звучит так, как будто вы пытались использовать ее в качестве переключателя командной строки в командной строке клиента mysql.exe, что не приведет к изменению поведения сервера.

Короче говоря, вам следует попытаться найти и отредактировать файл my.cnf, который используется вашим сервером в настоящее время. В [mysqld]разделе измените настройки max_allowed_packet на что-то вроде

[mysqld]
max_allowed_packet=32M

Не забудьте перезапустить сервер после изменения конфигурации.

Я использовал 32M (смехотворно большое значение) в качестве примера. Поскольку ваш запрос кажется огромным, вы должны попробовать это значение (или, возможно, даже 64 МБ, если у вас достаточно ОЗУ), чтобы проверить, работает ли он.

Другой вариант - оставить сервер как есть и изменить поведение клиента, используемого для создания дампа SQL. Скажите это, чтобы ограничить размер отдельных запросов до 1 МБ - это также должно помочь.

Для получения более подробной информации см. B.1.2.10. Слишком большой пакет в руководстве по MySQL.

Михай Лимбашан
источник
1
Да, я просто пытался переключиться из командной строки. Причина, по которой я думал, что это дало эффект, заключалась в том, что он давал макс разрешенному пакету слишком маленькую ошибку, когда я устанавливал его на что-то меньшее. Я попробую ваше предложение в понедельник. Спасибо
Джереми Френч
Пожалуйста - я почти уверен, что это сработает. К сожалению, как и во многих других программах, написанных за последние 50 лет, сообщения об ошибках MySQL, как правило, отстой и вводят в заблуждение, если вы еще не знакомы с тем, как работает разум разработчика :).
Михай Лимбашан
Рад это слышать - развлекайся.
Михай Лимбашан
Очень, очень круто. У меня была такая же проблема, пришел сюда, чтобы задать вопрос и бац! решена. @ Михай - все, что тебе платят; этого не достаточно :)
Стивен Эверс
Это решение помогло нам, когда мы получили эту ошибку после перемещения нашего MySQL с локального хоста на удаленный сервер. Большое спасибо!
Леа Коэн
1

На MySQL 5.7.24 это было из-за старой конфигурации из MySQL 5.6

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

Опция ниже обязательна, если версия SQL та же 5.7.5 или выше.

sql_mode=TRADITIONAL

Также в /etc/my.cnf есть два параметра max_allowed_packet, другой - для mysqldump. Пожалуйста, обратите внимание на то же самое.

max_allowed_packet = <1G>

Моя установка на CentOS7.

Кришна Пандей
источник
0

Можете ли вы получить доступ к экземпляру MySQL на сервере Windows из окна Linux?

Если да, то можете ли вы выполнить команду в окне linux с ключом -h для подключения к серверу в окне windows?

mysql -u username -d dbase -h <windows host> < dump.sql

Это может решить проблемы с вашим набором символов , так как для импорта вы используете клиент Linux на оригинальной коробке. (просто предположение)

казарка
источник
0

Что говорит журнал MySQL?

Иногда эта ошибка сообщается клиенту, если на сервере есть неисправимая ошибка. Это может быть индикатором повреждения на диске таблиц базы данных.

Дейв Чейни
источник
-1

У вашей учетной записи был пароль? Возможно, вам нужно добавить ключ -p:

mysql -u username -p -d dbase < c:\dump.sql
казарка
источник
О, вероятно, нет, так как, похоже, не удалось войти в импорт.
Brent