SET GLOBAL max_allowed_packet не работает
Я узнал, как изменить значение по умолчанию max_allowed_packet
в MySQL, используя SET GLOBAL
. Однако каждый раз, когда я использовал эту команду, значение по умолчанию оставалось нетронутым!
Я использовал следующие команды:
mysql --user=root --password=mypass
mysql> SET GLOBAL max_allowed_packet=32*1024*1024;
Query OK, 0 rows affected (0.00 secs)
mysql> SHOW VARIABLES max_allowed_packet;
И тогда результат max_allowed_packet = 1048576. Что мне не хватает?
Ответы
Ответ 1
Хмммм.. Вы попали в этот NOT-A-BUG.:)
Если вы изменяете глобальную системную переменную, значение запоминается и используется для новых пока сервер не перезагрузится. (Чтобы установить глобальную системную переменную Постоянно, вы должны установить его в файле параметров.) Изменение видимо для любого клиента, который получает доступ к этой глобальной переменной. Однако изменение влияет на соответствующий сеанс переменная только для клиентов, которые подключаются после изменения. Изменение глобальной переменной не влияет на переменную сеанса для любого клиента, который в настоящее время подключен (даже не тот клиента, который выдает инструкцию SET GLOBAL).
Обратитесь к этому. Прочитайте объяснение Шейна Бестера.
Вам следует изменить файл my.ini/my.cnf и перезапустить сервер, чтобы параметр max_allowed_packet вступил в силу.
Ответ 2
После запуска
set global max_allowed_packet=1000000000;
вам нужно перезапустить mysql перед
SHOW VARIABLES LIKE 'max_allowed_packet'
отобразит новое значение.
У меня возникает эта проблема при перезапуске mysql через настройки системы MAC OSX, и значение не изменилось. Поэтому, войдя в mysql через консоль
mysql -u root -p
изменив его, а затем перезапустив mySql, похоже, сработало. Возможно, это была ошибка OS X.
Ответ 3
Просто быстрый способ увидеть переменную для тех, кто сталкивается с этим. Чтобы получить значение обратно, вам нужно запустить
SHOW VARIABLES LIKE 'max_allowed_packet'
Ответ 4
Я также столкнулся с этой проблемой, и в моем случае у меня установлено несколько версий MySql.
Добавление этой заметки для тех, кто может настроить MySql с помощью homebrew на mac и испытывает проблемы с установкой значения max_allowed_packet
в файле my.cnf
.
Самая важная информация, которая помогла, заключалась в том, что файл my.cnf
может присутствовать в разных местах (выдержка из https://github.com/rajivkanaujia/alphaworks/wiki/Install-MySQL-using-Homebrew) -
/usr/local/etc/my.cnf --> Global Access
/usr/local/etc/my.cnf --> Global Access
/usr/local/Cellar/mysql/5.7.18/my.cnf --> Sever Level Access
~/.my.cnf --> User Level Access
Так как я установил MySql 5.6 через Home brew, я нашел его на -
/usr/local/Cellar/mysql\@5.6/5.6.43/my.cnf
Следующие шаги -
Обновите файл /usr/local/Cellar/mysql\@5.6/5.6.43/my.cnf
в группе [mysqld]
, добавив необходимые max_allowed_packet value
-
[mysqld]
max_allowed_packet=5G
Перезапустите MySQL, используя службы brew -
brew services restart [email protected]
Подключитесь/подключитесь к оболочке mysql и убедитесь, что конфигурация вступила в силу, используя -
show variables like 'max_allowed_packet';
Ответ 5
Для тех, кто имеет конфигурацию MariaDb, проблема может заключаться в том, что переменная max_allowed_packet перезаписывается файлом конфигурации, вызываемым позже.
В моем случае я попытался импортировать базу данных, и сервер ответил мне: ОШИБКА 2006 (HY000) в строке 736: сервер MySQL пропал
Я обнаружил, что файл:
/etc/mysql/mariadb.conf.d/50-server.cnf
называется позже
/etc/mysql/conf.d/mysql.cnf
Я пытался непрерывно меняться в файле "mysql.cnf", но значение было перезаписано в "50-server.cnf".
Таким образом, решение заключается в том, чтобы ввести файл
/etc/mysql/mariadb.conf.d/50-server.cnf
и вместо "max_allowed_packet = 16M" поместите желаемое значение в качестве примера "max_allowed_packet = 64M"