У меня возникла проблема с 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, и все готово.
См. Документацию для получения дополнительной информации.
Переменная max_allowed_packet может быть установлена глобально путем запуска запроса.
Однако, если вы не измените его в файле my.ini (как предложил dragon112), значение будет сброшено при перезапуске сервера, даже если вы установили его глобально.
Чтобы изменить максимально допустимый пакет для всех на 1 ГБ до перезапуска сервера:
У одного из моих младших разработчиков возникла проблема с изменением этого для меня, поэтому я подумал, что я буду расширять его более подробно для пользователей 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
Я думаю, что некоторые из них также захотят узнать, как найти файл my.ini на вашем ПК. Для пользователей Windows я считаю, что лучший способ заключается в следующем:
- Win + R (ярлык для ‘run’), введите services.msc, введите
- Вы можете найти запись типа «MySQL56», щелкнуть правой кнопкой мыши по ней, выбрать свойства
- Вы можете видеть, что «D:/Program Files/MySQL/MySQL Server 5.6/binmysqld» —defaults-file = «D:ProgramDataMySQLMySQL Server 5.6my.ini» MySQL56
Следуя всем инструкциям, это то, что я сделал и работал:
Итак, как мы видим, 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] , и я установил значение, мои резервные копии были завершены без проблем.
Для тех, кто работает с сервером mysql wamp
Значок поддонов для Wamp → MySql → my.ini
Прокрутите вниз до конца, пока не найдете
Добавьте строку package_size между
Проверьте, работает ли этот запрос с этим запросом
Многие из ответчиков заметили проблему и уже дали решение.
Я просто хочу предложить другое решение, которое изменяет значение переменной Glogal из инструмента Mysql Workbench. Это, конечно, если вы используете Workbench, работающую локально на сервере (или через SSH-соединение)
Вы просто подключаетесь к своему экземпляру и выбираете меню:
Сервер → Файл параметров → Сеть → max_allowed_packed
Вы установите нужное значение, а затем вам нужно перезапустить службу MySql.
Эта ошибка возникает из-за того, что ваши данные содержат больше заданного значения.
Просто запишите max_allowed_packed=500M или вы можете вычислить это 500 * 1024k и использовать это вместо 500M, если хотите.
Теперь просто перезапустите MySQL.
Для тех, кто работает с MySQL в сервисе Amazon RDS, это изменение выполняется через группы параметров. Вам нужно создать новый PG или использовать существующий (отличный от стандартного, который доступен только для чтения).
Вам нужно найти параметр max_allowed_packet , изменить его значение и нажать «Сохранить».
Вернувшись в свой экземпляр MySQL, если вы создали новую PG, вы должны присоединить PG к своему экземпляру (вам может потребоваться перезагрузка). Если вы изменили PG, который уже был прикреплен к вашему экземпляру, изменения будут применены без перезагрузки ко всем вашим экземплярам, к которым прикреплен этот PG.
Система контроля работы сотрудников / Без категории
неообходимо установить переменную mySQL сервера
Подключение к серверу.
Error: Необходимо установить переменную MySQL-сервера ‘max_allowed_packet’ как минимум на 32МБ (см. справку по установке комплекса ПО
Вот такая ошибка вылетает при установки администраторской части программы, прошу помощи.
Отмечено как решение
Необходимо установить переменную сервера max_allowed_packet для правильной работы с комплексом СТАХАНОВЕЦ.
В файле папки MySQL-сервера my.ini (Windows) или my.cnf (Unix) в раздел [mysqld] необходимо добавить строчку:
После чего нужно перезапустить MySQL-сервер.
Внимание! Если данный параметр уже прописан в конфигурационном файле, то необходимо только изменить его значение, а не добавлять новый!
Для версии MySQL ниже 5.6 файл my.ini по умолчанию расположен в %ProgramFiles%MySQLMySQL Server x.xxmy.ini
Для версии MySQL от 5.6 файл my.ini по умолчанию расположен в C:ProgramDataMySQLMySQL Server x.xxmy.ini
Добрый день Илья!
К сожалению проблему решить не удалось, версия SQL-сервера 5.7, Провел поиск по всему компьютеру файла с именем my.ini не нашел. В папке с сервером лежит файл my-default.ini отредактировал как Вы написали
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It’s a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .
# datadir = .
# port = .
# server_ >
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
max_allowed_packet=32M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
перезапустил сервер, снова ставлю программу администратора вылетает таже ошибка при подготовке базы данных.
I am having a problem with BLOB fields in my MySQL database — when uploading files larger than approx 1MB I get an error Packets larger than max_allowed_packet are not allowed.
Here is what i’ve tried:
In MySQL Query Browser I ran a show variables like ‘max_allowed_packet’ which gave me 1048576.
Then I execute the query set global max_allowed_packet=33554432 followed by show variables like ‘max_allowed_packet’ — it gives me 33554432 as expected.
But when I restart the MySQL server it magically goes back to 1048576. What am I doing wrong here?
Bonus question, is it possible to compress a BLOB field?
11 Answers 11
Change in the my.ini or
/.my.cnf file by including the single line under [mysqld] or [client] section in your file:
then restart the MySQL service and you are done.
See the documentation for further information.
The max_allowed_packet variable can be set globally by running a query.
However, if you do not change it in the my.ini file (as dragon112 suggested), the value will reset when the server restarts, even if you set it globally.
To change the max allowed packet for everyone to 1GB until the server restarts:
One of my junior developers was having a problem modifying this for me so I thought I would expand this in greater detail for linux users:
1) open terminal
2) ssh root@YOURIP
3) enter root password
4) nano /etc/mysql/my.cnf (if command is not recognized do this first or try vi then repeat: yum install nano )
5) add the line: max_allowed_packet=256M (obviously adjust size for whatever you need) under the [MYSQLD] section. He made a mistake of putting it at the bottom of the file first so it did not work.
6) Control + O (save) then ENTER (confirm) then Control + X (exit file)
7) service mysqld restart
8) You can check the change in the variables section on phpmyadmin