Подтвердить что ты не робот

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. Что мне не хватает?

4b9b3361

Ответ 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"