Mysqldump error: Получил пакет больше, чем max_allowed_packet '
Мое приложение загружает письма через IMAP и хранит их в базе данных MySQL. Раньше я поддерживал размер почтовых сообщений до 10 МБ и, следовательно, достаточно столбца "средний текст" для хранения содержимого почты. Теперь мне нужно поддерживать почту до 30 МБ. Поэтому я изменил тип данных для столбца на 'largetext'. Вчера было сохранено письмо размером 25 МБ. После этого всякий раз, когда я выполняю команду mysqldump, она выдает ошибку:
mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `ib_mailbox_backup` at row: 3369
Строка 3369 содержит 25 МБ почты.
В конфигурации MySQL я увеличил "max_allowed_packet" с 64M до 512M, и он по-прежнему терпит неудачу с той же ошибкой. Выполнение команды mysqldump на том же компьютере, на котором запущен сервер MySQL. Как я могу это решить?
Ответы
Ответ 1
- Вы можете добавить
--max_allowed_packet=512M
в свою команду mysqldump
.
- Или добавьте
max_allowed_packet=512M
в [mysqldump]
раздел вашего my.cnf
(спасибо @Varun)
Примечание: он не будет работать, если он не находится в разделе [mysqldump]
...
Ответ 2
Некоторые из моих скриптов перестали работать после обновления до Debian 9 и MariaDB.
MariaDB на Debian вводит новый файл конфигурации специально для настроек mysqldump (/etc/mysql/conf.d/mysqldump.cnf
). Если ранее вы установили max_allowed_packet
< > 16M
в свой стандартный /etc/mysql/my.cnf
, новый файл конфигурации перезапишет этот параметр. Поэтому обязательно проверьте этот новый файл конфигурации и либо удалите запись, либо настройте ее на свои нужды.
Я не уверен, что изменение было внесено в swap из MySQL в MariaDB или если Debian внес изменения в то, как файлы конфигурации размещаются в V9.
Ответ 3
У меня была аналогичная ошибка и с ошибкой размером 512 М в строке 0. Это была таблица innodb, которая была явно повреждена (mysqlcheck показал ОК). Я закончил тем, что воссоздал таблицу, а затем работал отлично с небольшим размером пакета всего в 128 М.