MySQL Error 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 ответов


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

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


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

его решение для командной строки клиента хорошо, но 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 мой.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 демона 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 для настройки и тестирования.

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


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

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


Я работаю в среде общего хостинга, и я разместил веб-сайт на основе Drupal. Я не могу редактировать my.ini файл или my.conf слишком файл.

Итак, я удалил все таблицы, которые были связаны с Cache и, следовательно, я мог бы решить эту проблему. Еще я ищу идеальное решение / способ справиться с этой проблемой.

редактировать - удаление таблиц создало проблемы для меня, потому что Drupal ожидал, что эти таблицы должны существовать. Так Что Я ... вытряхнул содержимое этих таблиц, которые решили проблему.


иногда настройки типа:

max_allowed_packet = 16M

в моем.ini не работает.

попробуйте определить my.ini следующим образом:

set-variable = max_allowed_packet = 32M

или

set-variable = max_allowed_packet = 1000000000

перезапустите сервер:

/etc/init.d/mysql restart