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

возможный дубликат Как изменить размер max_allowed_packet

Muleskinner 17.01.2014 18:19

@Muleskinner, этот вопрос был опубликован за 3 года до того, который вы упомянули, и я указываю на это через 4 года после вашего комментария. :п

tiomno 20.02.2018 08:41

Webyog.com Ссылка не работает: 404

Pathros 26.02.2018 22:40
Здесь, a similar error, "Packet for query is to large (5526600 > 1048576).", was caused by a wrong password entry, when connecting to MySQL database using DataGrip 2016.1 by JetBrains, and got resolved when rectified (using the right password corresponding to the MySQL database user).
nyedidikeke 24.03.2018 16:33
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
458
4
452 859
14
Перейти к ответу Данный вопрос помечен как решенный

Ответы 14

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

[mysqld]

max_allowed_packet = 10M

на Mac файл, очевидно, находится в другом месте.

kch 18.09.2008 18:44

конечно, но конфигурация все еще где-то, хотя я не знаю точное местоположение

GHad 18.09.2008 21:15

Для меня в Fedora 20 с MariaDB размещение этого параметра в конце /etc/my.cnf.d/server.cnf помогло. Мне, конечно, пришлось перезапустить службу ... sudo nano systemctl restart mariadb.service

Ray Foss 11.08.2014 23:54

Скорее всего, это будет файл «my.cnf», а в системах nix, как правило, в / etc / или / usr / local / etc. После редактирования обязательно перезапустите сервер mysql, чтобы изменения вступили в силу.

Chris 31.01.2019 01:31

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

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

пробовал, не сработало. весь дамп в 272мб, пробовал с макс выше.

kch 18.09.2008 18:46

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

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

Ответ принят как подходящий

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

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

У меня есть сервер с 16 ГБ ОЗУ, не стоит ли устанавливать max_allowed_packet на 100 МБ?

Webnet 08.11.2010 17:53

в стороне, чтобы запустить эти установленные команды, ваш пользователь mysql должен иметь привилегии SUPER, иначе он не сработает с ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation

anthonysomerset 13.09.2011 20:03

К вашему сведению - это помогло мне решить ДРУГОЙ ошибку - "Сервер # 2006 ушел"

itsho 13.12.2011 20:05

Я также получил сообщение «ОШИБКА 2006: сервер MySQL ушел». Это было на машине с Windows. На машине с Linux я получил сообщение «ERROR 1153: Got a package large than 'max_allowed_packet' bytes» для того же файла дампа. Версии Mysql также различаются на машинах, поэтому я не совсем уверен, связано ли это с версией или ОС.

Cvuorinen 22.12.2011 16:16

Имейте в виду, что использование «set global» работает до следующего перезапуска службы mysql.

Will Shaver 17.11.2012 01:28

Это помогло мне, за исключением того, что 100 МБ вызвали проблемы с InnoDB. Я изменил его на 10 МБ, и он работал нормально.

Matt Browne 18.10.2013 18:04

Пропустите «глобальные настройки» и финальные «;» при добавлении этих значений в файлы my.ini или my.cnf. Пример: «net_buffer_length = 1000000» в my.conf.

Rustavore 29.05.2014 03:52

В CentOS 5 my.cnf находится по адресу /etc/my.cnf.

Rustavore 29.05.2014 03:53

Для тех, кто использует PHPMyAdmin, я смог применить эту технику, начав с домашней страницы PHPMyAdmin, затем щелкнув вкладку переменных, затем вы можете искать «пакет» или «буфер», чтобы сузить круг и оттуда редактировать.

ajk4550 18.06.2015 21:25

У меня была такая же проблема, и я потратил на это много часов, потому что я восстанавливаю БД с помощью MySQL Workbench, который не показывает ошибку о размере пакета. Когда я использую SQLYog, он показывает, что что-то вроде размера пакета недостаточно. Изменение этого значения на 500 МБ решает проблему.

emeraldhieu 07.08.2015 07:41

У меня была такая же проблема, и в моем случае достаточно было изменить файл my.ini на сервере. Не нужно было добавлять --max_allowed_packets к клиентскому вызову

Xantrul 17.11.2017 19:29

@Rustavore На CentOS 7, внутри my.cnf, что max_allowed_packet не существует. Я добавил его, сохранил файл, перезапустил mariadb, но он не работал. На самом деле проблема заключалась в плагине wordpress, который создал этот файл backup.sql. Вместо этого это было решено путем создания резервной копии через phpmyadmin

Pathros 26.02.2018 22:37

Параметр командной строки НЕ работал у меня (MySQL 5.7 в Windows), но установка параметра в my.ini ДЕЙСТВОВАЛА. (Так что попробуйте изменить его там, прежде чем начинать поиск других источников ошибки)

Bjarke 22.08.2018 23:51

Мне хватило установки max_allowed_packet = 100M в my.cnf.

Youness 26.02.2019 22:08

conf расположение файлов для MariaDB: mariadb.com/kb/en/library/configuring-mariadb-with-option-fi‌ les /…

Alex Pandrea 11.03.2019 17:27

В Windows, используя WAMP, щелкните левой кнопкой мыши значок wamp и выберите mysql. потом настройки и там поменяй. Он автоматически перезапустит все

Norman Bird 08.03.2020 11:26

Мне пришлось добавить строки в файл /etc/my.cnf в разделе [mysqld] (CentOS 7, MariaDB 5.5), чтобы он заработал.

Michael 17.11.2020 11:00

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

По умолчанию my.cnf нигде не находится.

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

Конфигурация по умолчанию для OSX выглядит как my-medium.cnf, хотя размер max_allowed_packet такой же в my-large.cnf ... пока вы не начнете что-то менять :)

Chris Burgess 01.08.2011 04:15

В моем случае /usrl/local/mysql/my.cnf не работал, пока я не скопирую его в /etc/my.cnf.

V G 13.08.2015 17:50

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

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

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

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

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

Решил проблему за меня; Импорт, который я делаю, является разовым, и я не могу легко изменить конфигурацию. Это отлично сработало. : D

Rob Howard 26.11.2009 07:11

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

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

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

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

Я также получил эту ошибку из-за неработающего SQL. В частности, моя таблица имеет нулевые ограничения, и мой код вставлял нулевые значения. Вместо того, чтобы выдать мне информативную ошибку, MySQL вернул ошибку max_allowed_packet. Если это поможет тем в будущем, я вставлял, используя pandas API df.to_sql(...)

Alex Petralia 14.11.2016 22:42

В 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. Вы можете сделать это для работающего демона, войдя в систему как 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

На какой версии MySQL вы это использовали?

crmpicco 07.10.2015 15:17

В 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 

Я работаю в среде виртуального хостинга, и у меня есть веб-сайт, основанный на 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

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

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

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

Ошибка:

ERROR 1153 (08S01) at line 6772: Got a packet bigger than 'max_allowed_packet' bytes Operation failed with exitcode 1

ЗАПРОС:

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

Другие вопросы по теме