У меня проблема с полями BLOB в моей базе данных MySQL - при загрузке файлов размером более 1 МБ я получаю сообщение об ошибке Packets larger than max_allowed_packet are not allowed.
Вот что я пробовал:
В MySQL Query Browser я запустил, show variables like 'max_allowed_packet'
который дал мне 1048576.
Затем я выполняю запрос с set global max_allowed_packet=33554432
последующим show variables like 'max_allowed_packet'
- он дает мне 33554432, как и ожидалось.
Но когда я перезагружаю сервер MySQL, он волшебным образом возвращается к 1048576. Что я здесь не так делаю?
Бонусный вопрос, можно ли сжать поле BLOB?
Ответы:
Измените файл
my.ini
или~/.my.cnf
, включив в него одну строку в разделе[mysqld]
или[client]
разделе:затем перезапустите службу MySQL, и все готово.
См. Документацию для получения дополнительной информации.
источник
[mysqld]
а не[mysql]
(очень похож). Стоило мне несколько минут на расчесывание головы.Max_allowed_packet переменная может быть установлена в глобальном масштабе в результате выполнения запроса.
Однако, если вы не измените его в
my.ini
файле (как предложил dragon112), значение будет сброшено при перезапуске сервера, даже если вы установите его глобально.Чтобы изменить максимально допустимый пакет для всех на 1 ГБ до перезагрузки сервера:
источник
SHOW VARIABLES WHERE variable_name = 'max_allowed_packet'
все еще показывает старое значениеУ одного из моих младших разработчиков возникла проблема с изменением этого для меня, поэтому я подумал, что я бы расширил это более подробно для пользователей Linux:
1) открыть терминал
2) ssh root @ YOURIP
3) введите пароль пользователя root
4) nano /etc/mysql/my.cnf (если команда не распознана, сначала сделайте это или попробуйте vi, а затем повторите: yum install nano)
5) добавьте строку: max_allowed_packet = 256M (очевидно, отрегулируйте размер для того, что вам нужно) в разделе [MYSQLD]. Он сделал ошибку, поместив его сначала внизу файла, чтобы он не работал.
6) Control + O (сохранить), затем ENTER (подтвердить), затем Control + X (выходной файл)
7) перезапуск службы mysqld
8) Вы можете проверить изменения в разделе переменных на phpmyadmin
источник
sudo: command not found
илиthis incident will be reported
потому что либоsudo
не были установлены и настроены. Было бы лучше засорять этот ответ инструкциями по настройкеsudo
в первый раз?Я думаю, что некоторые также хотели бы знать, как найти файл my.ini на вашем компьютере. Для пользователей Windows, я думаю, что лучший способ заключается в следующем:
Я получил этот ответ от http://bugs.mysql.com/bug.php?id=68516
источник
Следуя всем инструкциям, вот что я сделал и работал:
Итак, как мы видим, max_allowed_packet был изменен вне my.ini.
Выйдем из сеанса и снова проверим:
Вывод, после SET GLOBAL max_allowed_packet = 1073741824, сервер будет иметь новый max_allowed_packet до его перезапуска, как кто-то заявил ранее.
источник
Если эта ошибка возникает при выполнении резервного копирования,
max_allowed_packet
ее можно настроить, вmy.cnf
частности, дляmysqldump
.Я постоянно получаю эту ошибку во время выполнения ,
mysqldump
и я не понимаю , потому что у меня был этот набор вmy.cnf
рамках[mysqld]
секции. Как только я понял, что могу установить его,[mysqldump]
и я установил значение, мои резервные копии были выполнены без проблем.источник
Для тех, кто работает Wamp MySQL Server
Значок Wamp tray -> MySql -> my.ini
Прокрутите вниз до конца, пока не найдете
Добавьте строку package_size между
Проверьте, работал ли он с этим запросом
источник
Эта ошибка возникает из-за того, что ваши данные содержат больше установленного значения.
Просто запишите
max_allowed_packed=500M
или вы можете рассчитать эти 500 * 1024k и использовать их вместо 500M, если хотите.Теперь просто перезапустите MySQL.
источник
/etc/my.cnf
, например , MySQL, или/etc/my.cnf.d/server.cnf
для MariaDBМногие из ответивших заметили проблему и уже дали решение.
Я просто хочу предложить другое решение, которое изменяет значение переменной Glogal из инструмента Mysql Workbench . Это конечно, если вы используете Workbench, работающий локально на сервере (или через SSH-соединение)
Вы просто подключаетесь к своему экземпляру и заходите в меню:
Вы устанавливаете желаемое значение, а затем вам нужно перезапустить MySql Service .
источник
Для тех, кто работает с MySQL на сервисе Amazon RDS, это изменение выполняется через группы параметров . Вам необходимо создать новый PG или использовать существующий (отличный от стандартного, который доступен только для чтения).
Вам нужно найти
max_allowed_packet
параметр, изменить его значение и нажать «Сохранить».Вернувшись в свой экземпляр MySQL, если вы создали новую PG, вы должны присоединить PG к своему экземпляру (вам может потребоваться перезагрузка). Если вы изменили PG, который уже был прикреплен к вашему экземпляру, изменения будут применены без перезагрузки ко всем вашим экземплярам, к которым прикреплен этот PG.
источник
Если вы хотите загрузить изображение или данные большого размера в базу данных. Просто измените тип данных на
'BIG BLOB'
.источник
установить глобальный max_allowed_packet = 10000000000;
источник