#Как проявляется проблема и где искать причину
Импорт SQL может завершаться с MySQL server has gone away, Got a packet bigger than max_allowed_packet или Error 1153, когда длинный INSERT/большое значение превосходит лимит пакета у клиента или сервера. Но обрыв сети и память дают похожие симптомы.
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Слишком большой SQL-пакетДамп содержит длинный INSERT или BLOB | Журнал указывает 1153 или max_allowed_packet | Сравнить лимиты клиента и сервера |
| Сетевой обрывКлиент сообщает Lost connection без сообщения о пакете | Проблема зависит от длительности/сети | Проверить таймауты, сеть и логи |
#Пошаговая диагностика и устранение
- 1. Получите конкретный код ошибкиОткройте журнал импорта и найдите первое сообщение: ERROR 1153 (Got a packet bigger than max_allowed_packet) отличается от ERROR 2013 (Lost connection). Зафиксируйте строку файла и место остановки без передачи содержимого персональных данных.
- 2. Проверьте серверный лимитПодключитесь к тому же экземпляру MySQL и выполните запрос. Значение выводится в байтах; 67108864 означает около 64 МиБ. Запишите текущую величину и версию сервера.
- mysql-клиент, чтение; системные настройки могут отличаться от клиентскихSQLКомандаmysql-клиент, чтение; системные настройки могут отличаться от клиентских.
SHOW VARIABLES LIKE 'max_allowed_packet';
- 3. Уточните характеристики большого оператораВ безопасной копии дампа найдите строки с крупными INSERT/BLOB и оцените размер без публикации содержимого. Если огромный пакет формируется приложением при экспорте, рассмотрите экспорт с меньшими INSERT-пакетами или специализированный инструмент.
- 4. Проверьте параметры командного клиентаКоманда mysql --help показывает поддерживаемую опцию max-allowed-packet; если клиент ограничивает пакет, ему также потребуется достаточный лимит. Не передавайте пароль прямо в аргументе.Linux · Терминал (Bash)КомандаLinux/macOS shell; только справка, на Windows используйте поиск по выводу.
mysql --help | grep -i "max-allowed-packet"
- 5. Спланируйте безопасное изменениеЕсли превышение размера доказано, согласуйте значение, достаточное для конкретного оператора, учтя максимальный размер поддерживаемого сервером и расход оперативной памяти. Изменение глобальной переменной может требовать административных прав и нового подключения; не применяйте ко всему серверу наугад.
- 6. Повторите импорт в тестовую схемуИспользуйте командный клиент, задав лимит только клиенту, но лишь если сервер уже допускает такой пакет. Запустите тестовый импорт в заранее созданную пустую схему с достаточным местом.
- Дополнительная команда по темеLinux · Терминал (Bash)С осторожностьюLinux/macOS shell; схема test_restore должна существовать и быть пустой; параметры примера замените.
mysql --max-allowed-packet=64M --user=appuser --password test_restore < backup.sqlКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- 7. Проверьте журнал и полноту данныхУбедитесь, что импорт завершился без ошибок и восстановлено ожидаемое число таблиц. Если снова ERROR 1153, уточните фактический серверный лимит нового соединения; если ERROR 2013, проверьте соединение, журналы сервера и время импорта.
- 8. Верните параметры и документируйте измененияЕсли серверный параметр временно менялся, согласуйте возврат или постоянный лимит с DBA. Не сохраняйте в документации пароль. Дальнейшие массовые загрузки проведите через тестируемый штатный процесс.
#Как проверить результат
Повторный импорт в пустую тестовую базу завершается без ошибки пакета, структура и контрольные строки восстановлены полностью.
#Если исправление не помогло
Если ограничение связано с отдельной огромной BLOB-записью, безопаснее изменить способ переноса данных, чем бесконечно увеличивать размер пакета для всей базы.