Я импортирую дамп 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 …
привел к той же ошибке.
Ответ 1
Вероятно, вам придется изменить его как для клиента (вы выполняете импорт), так и для 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;
(Используйте очень большое значение для размера пакета.)
Ответ 2
Как сказал michaelpryor, вы должны изменить его как для клиента, так и для сервера mysqld daemon.
Его решение для клиентской командной строки хорошо, но ini файлы не всегда делают трюк, в зависимости от конфигурации.
Итак, откройте терминал, введите mysql, чтобы получить приглашение mysql, и выполните следующие команды:
set global net_buffer_length=1000000;
set global max_allowed_packet=1000000000;
Сохраните приглашение mysql и запустите выполнение SQL-команд вашей командной строки на втором терминале.
Ответ 3
Это может быть изменено в вашем файле my.ini
(в Windows, расположенном в \Program Files\MySQL\MySQL Server) в разделе сервера, например:
[mysqld]
max_allowed_packet = 10M
Ответ 4
Re my.cnf в Mac OS X при использовании MySQL из дистрибутива пакета mysql.com dmg
По умолчанию my.cnf нигде не найдено.
Вам нужно скопировать один из /usr/local/mysql/support-files/my*.cnf
в /etc/my.cnf
и перезапустить mysqld
. (Что вы можете сделать в области предпочтений MySQL, если вы его установили.)
Ответ 5
В 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
Ответ 6
Исправление состоит в том, чтобы увеличить демоны MySQL max_allowed_packet. Вы можете сделать это для запускаемого демона, войдя в систему как 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
Ответ 7
В 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
#
Ответ 8
Используйте переменную max_allowed_packet
, выдающую команду типа
mysql --max_allowed_packet=32M
-u root -p database < dump.sql
Ответ 9
Слегка не связанный с вашей проблемой, поэтому здесь один для Google.
Если вы не использовали mysqldump SQL, возможно, ваш SQL файл поврежден.
Я только что получил эту ошибку, случайно получив в моем коде незаписанный строковый литерал. Неряшливые пальцы происходят.
Это фантастическое сообщение об ошибке, которое нужно получить за бегущую строку, спасибо за это MySQL!
Ответ 10
Иногда установка типа:
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
Ответ 11
Повысить безопасность max_allowed_packet
, это риск безопасности, поскольку злоумышленник может нажимать пакеты большего размера и разбивать систему.
Итак, оптимальное значение max_allowed_packet
должно быть настроено и проверено.
Лучше изменить, когда потребуется (с помощью set global max_allowed_packet = xxx
)
чем иметь его как часть my.ini или my.conf.
Ответ 12
Установите max_allowed_packet тем же (или более), чем это было, когда вы сбросили его с помощью mysqldump. Если вы не можете этого сделать, сделайте сброс снова с меньшим значением.
То есть, предполагая, что вы сбросили его с помощью mysqldump. Если вы использовали какой-то другой инструмент, вы сами по себе.
Ответ 13
Я работаю в общей среде размещения, и у меня есть веб-сайт, основанный на Drupal. Я не могу редактировать файл my.ini
или файл my.conf
.
Итак, я удалил все таблицы, связанные с Cache
, и, следовательно, я мог бы решить эту проблему. Тем не менее я ищу идеальное решение/способ решения этой проблемы.
Изменить. Удаление таблиц создало проблемы для меня, потому что Drupal ожидал, что эти таблицы должны быть существующими. Поэтому я опустошил содержимое этих таблиц, которые решили проблему.
Ответ 14
Ошибка:
ОШИБКА 1153 (08S01) в строке 6772: получен пакет больше, чем байты 'max_allowed_packet' Операция завершилась неудачно с кодом выхода 1
QUERY:
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