Ошибка MySQL 1153 - получен пакет больше, чем байты 'max_allowed_packet' - PullRequest
405 голосов
/ 18 сентября 2008

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

Ответы [ 14 ]

538 голосов
/ 19 сентября 2008

Возможно, вам придется изменить его как для клиента (вы выполняете импорт), так и для демона 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;

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

121 голосов
/ 06 апреля 2009

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

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

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

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

Оставьте приглашение mysql открытым и запустите выполнение SQL командной строки на втором терминале.

37 голосов
/ 18 сентября 2008

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

[mysqld]

max_allowed_packet = 10M
16 голосов
/ 20 сентября 2008

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

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

Вам необходимо скопировать одну из /usr/local/mysql/support-files/my*.cnf в /etc/my.cnf и перезапустить mysqld. (Что вы можете сделать на панели настроек MySQL, если вы его установили.)

12 голосов
/ 03 февраля 2014

В 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 
10 голосов
/ 28 ноября 2013

Исправление - увеличить 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
5 голосов
/ 02 октября 2013

На 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
#
4 голосов
/ 21 апреля 2010

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

Если вы не выполняли mysqldump SQL, возможно, ваш SQL сломан.

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

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

4 голосов
/ 18 сентября 2008

Используйте переменную max_allowed_packet, выдав команду типа

mysql --max_allowed_packet=32M -u root -p database < dump.sql

1 голос
/ 26 июля 2016

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

Итак, оптимальное значение max_allowed_packet для настройки и тестирования.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...