Ошибка MySQL 1153 – получен пакет, превышающий байты max_allowed_packet

Я импортирую дамп 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 … привел к той же ошибке.

13 Solutions collect form web for “Ошибка MySQL 1153 – получен пакет, превышающий байты max_allowed_packet”

Вероятно, вам придется изменить его как для клиента (вы выполняете его для импорта), так и для mysqld daemon, который работает и принимает импорт.

Для клиента вы можете указать его в командной строке:

 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; 

(Используйте очень большое значение для размера пакета.)

Как сказал michaelpryor, вы должны изменить его как для клиента, так и для сервера mysqld daemon.

Его решение для командной строки клиента хорошо, но ini-файлы не всегда делают трюк, в зависимости от конфигурации.

Итак, откройте терминал, введите mysql, чтобы получить приглашение mysql, и выполните следующие команды:

 set global net_buffer_length=1000000; set global max_allowed_packet=1000000000; 

Сохраните приглашение mysql и запустите выполнение SQL-команды на втором терминале.

Это можно изменить в файле my.ini (в Windows, расположенном в \ Program Files \ MySQL \ MySQL Server) в разделе сервера, например:

 [mysqld] max_allowed_packet = 10M 

Re my.cnf в Mac OS X при использовании MySQL из дистрибутива mysql.com dmg

По умолчанию my.cnf нигде не найдено.

Вам необходимо скопировать один из /usr/local/mysql/support-files/my*.cnf в /etc/my.cnf и перезапустить mysqld . (Что вы можете сделать в области предпочтений 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 

Исправление состоит в том, чтобы увеличить max_allowed_packet деmonoв 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 

В 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 --max_allowed_packet=32M -u root -p database < dump.sql

Немного не связанный с вашей проблемой, так вот для Google.

Если вы не mysqldump SQL, возможно, ваш SQL-файл сломан.

Я только что получил эту ошибку, случайно получив в моем коде незаписанный строковый литерал. Быстрые пальцы.

Это фантастическое сообщение об ошибке, чтобы получить за беглую строку, спасибо за это MySQL!

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

Таким образом, Оптимальное значение max_allowed_packet настраивается и тестируется.

Лучше изменить его при необходимости (используя set global max_allowed_packet = xxx ), чем иметь его как часть my.ini или my.conf .

Установите max_allowed_packet на то же (или больше), чем это было, когда вы сбросили его с помощью mysqldump. Если вы не можете этого сделать, сделайте сброс снова с меньшим значением.

То есть, предполагая, что вы сбросили его с помощью mysqldump. Если вы использовали какой-то другой инструмент, вы сами по себе.

Я работаю в среде совместного размещения, и у меня есть веб-сайт, основанный на 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 
  • Как я могу использовать mySQL replace () для замены строк в нескольких записях?
  • Как скопировать данные из одной таблицы в другую новую таблицу в MySQL?
  • Зачем мне нужен ./ для команд для запуска на Mountain Lion?
  • Нечувствительность к регистру MySQL
  • MySQL хранимой процедуры против функции, которую я буду использовать, когда?
  • Нормализация в MYSQL
  • Как хранить несколько опций в одной таблице?
  • Что быстрее? SELECT SQL_CALC_FOUND_ROWS FROM `table` или SELECT COUNT (*)
  • Выбросить ошибку в триггере MySQL
  • Можно ли использовать числа в качестве имен таблиц в MySQL?
  • В MySQL я могу скопировать одну строку для вставки в ту же таблицу?
  • Давайте будем гением компьютера.