Я импортирую дамп MySQL и получаю следующую ошибку.
$ mysql foo < foo.sql
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes
Судя по всему, в базе данных есть вложения, поэтому вставки очень большие.
Это на моем локальном компьютере, Mac с MySQL 5, установленным из пакета MySQL.
Где поменять max_allowed_packet, чтобы иметь возможность импортировать дамп?
Что еще я должен установить?
Просто запуск mysql --max_allowed_packet=32M … привел к той же ошибке.
@Muleskinner, этот вопрос был опубликован за 3 года до того, который вы упомянули, и я указываю на это через 4 года после вашего комментария. :п
Webyog.com Ссылка не работает: 404






Это можно изменить в вашем файле my.ini (в Windows, расположенном в \ Program Files \ MySQL \ MySQL Server) в разделе сервера, например:
[mysqld]
max_allowed_packet = 10M
на Mac файл, очевидно, находится в другом месте.
конечно, но конфигурация все еще где-то, хотя я не знаю точное местоположение
Для меня в Fedora 20 с MariaDB размещение этого параметра в конце /etc/my.cnf.d/server.cnf помогло. Мне, конечно, пришлось перезапустить службу ... sudo nano systemctl restart mariadb.service
Скорее всего, это будет файл «my.cnf», а в системах nix, как правило, в / etc / или / usr / local / etc. После редактирования обязательно перезапустите сервер mysql, чтобы изменения вступили в силу.
Используйте переменную max_allowed_packet, выполнив такую команду, как
mysql --max_allowed_packet=32M
-u root -p database < dump.sql
пробовал, не сработало. весь дамп в 272мб, пробовал с макс выше.
Установите max_allowed_packet на такое же (или большее) значение, которое было, когда вы сбросили его с помощью mysqldump. Если вы не можете этого сделать, сделайте дамп еще раз с меньшим значением.
То есть, если вы сбросили его с помощью mysqldump. Если вы использовали какой-то другой инструмент, вы сами по себе.
Вероятно, вам придется изменить его как для клиента (вы выполняете импорт), так и для демона mysqld, который работает и принимает импорт.
Для клиента вы можете указать это в командной строке:
mysql --max_allowed_packet=100M -u root -p database < dump.sql
Кроме того, измените файл my.cnf или my.ini в разделе mysqld и установите:
max_allowed_packet=100M
или вы можете запустить эти команды в консоли MySQL, подключенной к тому же серверу:
set global net_buffer_length=1000000;
set global max_allowed_packet=1000000000;
(Используйте очень большое значение для размера пакета.)
У меня есть сервер с 16 ГБ ОЗУ, не стоит ли устанавливать max_allowed_packet на 100 МБ?
в стороне, чтобы запустить эти установленные команды, ваш пользователь mysql должен иметь привилегии SUPER, иначе он не сработает с ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation
К вашему сведению - это помогло мне решить ДРУГОЙ ошибку - "Сервер # 2006 ушел"
Я также получил сообщение «ОШИБКА 2006: сервер MySQL ушел». Это было на машине с Windows. На машине с Linux я получил сообщение «ERROR 1153: Got a package large than 'max_allowed_packet' bytes» для того же файла дампа. Версии Mysql также различаются на машинах, поэтому я не совсем уверен, связано ли это с версией или ОС.
Имейте в виду, что использование «set global» работает до следующего перезапуска службы mysql.
Это помогло мне, за исключением того, что 100 МБ вызвали проблемы с InnoDB. Я изменил его на 10 МБ, и он работал нормально.
Пропустите «глобальные настройки» и финальные «;» при добавлении этих значений в файлы my.ini или my.cnf. Пример: «net_buffer_length = 1000000» в my.conf.
В CentOS 5 my.cnf находится по адресу /etc/my.cnf.
Для тех, кто использует PHPMyAdmin, я смог применить эту технику, начав с домашней страницы PHPMyAdmin, затем щелкнув вкладку переменных, затем вы можете искать «пакет» или «буфер», чтобы сузить круг и оттуда редактировать.
У меня была такая же проблема, и я потратил на это много часов, потому что я восстанавливаю БД с помощью MySQL Workbench, который не показывает ошибку о размере пакета. Когда я использую SQLYog, он показывает, что что-то вроде размера пакета недостаточно. Изменение этого значения на 500 МБ решает проблему.
У меня была такая же проблема, и в моем случае достаточно было изменить файл my.ini на сервере. Не нужно было добавлять --max_allowed_packets к клиентскому вызову
@Rustavore На CentOS 7, внутри my.cnf, что max_allowed_packet не существует. Я добавил его, сохранил файл, перезапустил mariadb, но он не работал. На самом деле проблема заключалась в плагине wordpress, который создал этот файл backup.sql. Вместо этого это было решено путем создания резервной копии через phpmyadmin
Параметр командной строки НЕ работал у меня (MySQL 5.7 в Windows), но установка параметра в my.ini ДЕЙСТВОВАЛА. (Так что попробуйте изменить его там, прежде чем начинать поиск других источников ошибки)
Мне хватило установки max_allowed_packet = 100M в my.cnf.
conf расположение файлов для MariaDB: mariadb.com/kb/en/library/configuring-mariadb-with-option-fi les /…
В Windows, используя WAMP, щелкните левой кнопкой мыши значок wamp и выберите mysql. потом настройки и там поменяй. Он автоматически перезапустит все
Мне пришлось добавить строки в файл /etc/my.cnf в разделе [mysqld] (CentOS 7, MariaDB 5.5), чтобы он заработал.
По умолчанию my.cnf нигде не находится.
Вам нужно скопировать один из /usr/local/mysql/support-files/my*.cnf в /etc/my.cnf и перезапустить mysqld. (Что вы можете сделать на панели предпочтений MySQL, если вы ее установили.)
Конфигурация по умолчанию для OSX выглядит как my-medium.cnf, хотя размер max_allowed_packet такой же в my-large.cnf ... пока вы не начнете что-то менять :)
В моем случае /usrl/local/mysql/my.cnf не работал, пока я не скопирую его в /etc/my.cnf.
Как сказал michaelpryor, вы должны изменить его на обе, клиент, и, сервер демон mysqld.
Его решение для командной строки клиента хорошее, но файлы ini не всегда помогают, в зависимости от конфигурации.
Итак, откройте терминал, введите mysql, чтобы получить приглашение mysql, и выполните следующие команды:
set global net_buffer_length=1000000;
set global max_allowed_packet=1000000000;
Не закрывайте приглашение mysql и запустите выполнение SQL из командной строки на втором терминале.
Решил проблему за меня; Импорт, который я делаю, является разовым, и я не могу легко изменить конфигурацию. Это отлично сработало. : D
Слегка не имеет отношения к вашей проблеме, так что вот одна для Google.
Если вы не использовали mysqldump для SQL, возможно, ваш SQL сломан.
Я получил эту ошибку из-за того, что в моем коде случайно был незакрытый строковый литерал. Неряшливые пальцы бывают.
Это отличное сообщение об ошибке для бегущей строки, спасибо за MySQL!
Я также получил эту ошибку из-за неработающего SQL. В частности, моя таблица имеет нулевые ограничения, и мой код вставлял нулевые значения. Вместо того, чтобы выдать мне информативную ошибку, MySQL вернул ошибку max_allowed_packet. Если это поможет тем в будущем, я вставлял, используя pandas API df.to_sql(...)
В CENTOS 6 /etc/my.cnf в разделе [mysqld] правильный синтаксис:
[mysqld]
# added to avoid err "Got a packet bigger than 'max_allowed_packet' bytes"
#
net_buffer_length=1000000
max_allowed_packet=1000000000
#
Исправление заключается в увеличении max_allowed_packet демона MySQL. Вы можете сделать это для работающего демона, войдя в систему как Super и выполнив следующие команды.
# mysql -u admin -p
mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)
mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)
Затем, чтобы импортировать ваш дамп:
gunzip < dump.sql.gz | mysql -u admin -p database
На какой версии MySQL вы это использовали?
В etc / my.cnf попробуйте изменить max_allowed _packet и net_buffer_length на
max_allowed_packet=100000000
net_buffer_length=1000000
если это не работает, попробуйте изменить на
max_allowed_packet=100M
net_buffer_length=100K
Я работаю в среде виртуального хостинга, и у меня есть веб-сайт, основанный на Drupal. Я не могу редактировать файл my.ini или файл my.conf.
Итак, я удалил все таблицы, относящиеся к Cache, и, следовательно, смог решить эту проблему. Тем не менее, я ищу идеальное решение / способ справиться с этой проблемой.
Редактировать - Удаление таблиц создало для меня проблемы, потому что Drupal ожидал, что эти таблицы должны существовать. Итак, я очистил содержимое этих таблиц, что решило проблему.
Иногда установка типа:
max_allowed_packet = 16M
в my.ini не работает.
Попробуйте определить my.ini следующим образом:
set-variable = max_allowed_packet = 32M
или же
set-variable = max_allowed_packet = 1000000000
Затем перезапустите сервер:
/etc/init.d/mysql restart
Наличие max_allowed_packet с более высоким значением представляет собой угрозу безопасности, поскольку злоумышленник может протолкнуть пакеты большего размера и привести к сбою системы.
Итак, оптимальное значение max_allowed_packet необходимо настроить и протестировать.
Лучше при необходимости поменять (с использованием set global max_allowed_packet = xxx)
чем иметь его как часть my.ini или my.conf.
Ошибка:
ERROR 1153 (08S01) at line 6772: Got a packet bigger than 'max_allowed_packet' bytes Operation failed with exitcode 1
ЗАПРОС:
SET GLOBAL max_allowed_packet=1073741824;
SHOW VARIABLES LIKE 'max_allowed_packet';
Максимальное значение:
Default Value (MySQL >= 8.0.3) 67108864
Default Value (MySQL <= 8.0.2) 4194304
Minimum Value 1024
Maximum Value 1073741824
возможный дубликат Как изменить размер max_allowed_packet