SET GLOBAL max_allowed_packet不起作用。
SET GLOBAL max_allowed_packet不起作用。
我发现了如何使用SET GLOBAL
在MySQL中更改max_allowed_packet
的默认值。然而,每次我使用这个命令时,默认值都没有改变!
我使用了以下命令:
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。我漏掉了什么?
在使用MariaDb配置的情况下,max_allowed_packet变量可能被稍后调用的配置文件覆盖。在我的情况下,我尝试导入一个数据库,但服务器返回了以下错误信息:ERROR 2006 (HY000) at line 736: MySQL server has gone away。我发现文件/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",这对我起到了作用,然后我运行了service mariadb restart
和service apache2 restart
。
SET GLOBAL max_allowed_packet doesn't work的原因是在修改max_allowed_packet的值之后,需要重新启动mysql才能使新的值生效。但是在通过MAC OSX系统偏好设置重新启动mysql时,新的值没有被更新。因此,通过控制台登录mysql,修改max_allowed_packet的值,然后重新启动mysql可以解决这个问题。可能是因为OS X的一个小问题导致的。
解决方法:
1. 通过控制台登录mysql:
mysql -u root -p
2. 修改max_allowed_packet的值:
set global max_allowed_packet=1000000000;
3. 重新启动mysql,使新的值生效。