Я пытаюсь импортировать файл дампа 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
Небольшой поиск в Google предположил, что это связано с переключателем max_allowed_packet, но я пробовал это, и это не сработало. Кто-нибудь знает, что это может быть?
Если у кого-то есть предложение по проблеме с набором символов, это тоже будет полезно.
Моим первым побуждением после прочтения сообщения об ошибке в заголовке вопроса было предложить увеличить max_allowed_packet. Вы упомянули, что пробовали "этот переключатель", и это не сработало. Можете ли вы подтвердить, что вы правильно изменили файл конфигурации сервера? Ваша фраза звучит так, будто вы пытались использовать это в качестве переключателя командной строки в командной строке клиента mysql.exe, что не заставит сервер изменить поведение.
Итак, вкратце, вы должны попытаться найти и отредактировать файл my.cnf, который в настоящее время использует ваш сервер. в [mysqld]
измените настройки max_allowed_packet на что-то вроде
[mysqld]
max_allowed_packet=32M
Не забудьте перезапустить сервер после изменения конфигурации.
В качестве примера я использовал 32M (смехотворно большое значение). Поскольку ваш запрос кажется огромным, вам следует попробовать это значение (или, возможно, даже 64 МБ, если у вас достаточно оперативной памяти), чтобы увидеть, работает ли он.
Другой вариант - оставить сервер как есть и изменить поведение клиента, используемого для создания дампа SQL. Скажите ему ограничить размер отдельных запросов до 1 МБ - это тоже должно помочь.
Подробнее см. В.1.2.10. Пакет слишком большой в руководстве по MySQL.
В MySQL 5.7.24 это произошло из-за старой конфигурации MySQL 5.6.
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION.
Опция ниже обязательна, если версия SQL такая же 5.7.5 или выше.
sql_mode=TRADITIONAL
Также есть два параметра max_allowed_packet в /etc/my.cnf, другой - для mysqldump. Пожалуйста, обратите внимание на то же самое.
max_allowed_packet = <1G>
Моя установка находится на CentOS7.
Можете ли вы получить доступ к экземпляру MySQL на сервере Windows из окна Linux?
Если да, можете ли вы запустить команду в окне Linux с помощью переключатель -h подключиться к серверу на windows box?
mysql -u username -d dbase -h <windows host> < dump.sql
это может решить ваши проблемы с набором символов, так как вы используете клиент Linux в исходной коробке для импорта. (просто предположение)
Что говорится в журнале MySQL?
Иногда об этой ошибке сообщает клиент, если на сервере есть неисправимая ошибка. Это может быть индикатором повреждения таблиц базы данных на диске.
Был ли у вашей учетной записи пароль? Возможно, вам нужно добавить переключатель -p:
mysql -u username -p -d dbase < c:\dump.sql