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