I found out how to change the default value of max_allowed_packet
in MySQL using SET GLOBAL
. However, each time I used this command, the default value stayed untouched!
I used these commands:
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;
And then the result is max_allowed_packet = 1048576. What am I missing?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
Hmmmm.. You have hit this NOT-A-BUG it seems. 🙂
If you change a global system variable, the value is remembered and used for new
connections until the server restarts. (To make a global system variable setting
permanent, you should set it in an option file.) The change is visible to any client that
accesses that global variable. However, the change affects the corresponding session
variable only for clients that connect after the change. The global variable change does
not affect the session variable for any client that is currently connected (not even that
of the client that issues the SET GLOBAL statement).
Refer this too. Read Shane Bester explanation.
You should change from the my.ini/my.cnf file and restart the server for the max_allowed_packet setting to take effect.
Method 2
After running
set global max_allowed_packet=1000000000;
you have to restart mysql before
SHOW VARIABLES LIKE 'max_allowed_packet'
will show the new value.
I have this issue when restarting mysql through the MAC OSX system preferences and the value hadn’t changed. So by logging into mysql via console
mysql -u root -p
changing it and then restarting mySql seemed to work. Might have been a OS X quirk though.
Method 3
For those with a MariaDb configuration the problem could be that the max_allowed_packet variable is overwritten by a configuration file called later.
In my case I tried to import a database and the server answered me:
ERROR 2006 (HY000) at line 736: MySQL server has gone away
I discovered that the file:
/etc/mysql/mariadb.conf.d/50-server.cnf
is called later
/etc/mysql/conf.d/mysql.cnf
I tried continuously changing in the “mysql.cnf” file but the value was overwritten in “50-server.cnf”.
So the solution is to enter the file
/etc/mysql/mariadb.conf.d/50-server.cnf
and instead of
“max_allowed_packet = 16M”
put the desired value as an example
“max_allowed_packet = 64M”
Method 4
I came across this problem as well and in my case I have multiple versions of MySql installed.
Adding this note for anyone who might have setup MySql using homebrew on mac and are having trouble setting max_allowed_packet
value in your my.cnf
file.
The most key information that helped was that the my.cnf
file can be present in different locations (excerpt from 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
Since I installed MySql 5.6 via Home brew I found it at –
/usr/local/Cellar/[email protected]/5.6.43/my.cnf
Steps followed –
-
Update the
/usr/local/Cellar/[email protected]/5.6.43/my.cnf
file under[mysqld]
group with the necessarymax_allowed_packet value
–[mysqld]
max_allowed_packet=5G -
Restart mysql using brew services –
brew services restart [email protected]
-
Connect/Reconnect to the mysql shell and verify that the configuration has taken effect using –
show variables like 'max_allowed_packet';
Method 5
Just a quick way to see the variable for anybody who comes across this. To get the value back you need to run
SHOW VARIABLES LIKE 'max_allowed_packet'
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0