我了解了如何使用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。我遗漏了什么?
发布于 2012-03-29 17:57:10
嗯..。看起来你已经命中了这个NOT-A-BUG。:)
如果更改全局系统变量,则会记住该值并将其用于新连接,直到服务器重新启动为止。(要使全局系统变量设置永久化,应在选项文件中进行设置。)任何访问该全局变量的客户端都可以看到该更改。但是,更改仅影响更改后连接的客户端的相应会话变量。全局变量更改不会影响当前连接的任何客户端的会话变量(甚至不会影响发出SET global语句的客户端的会话变量)。
也可以参考this。阅读Shane Bester的解释。
您应该从my.ini/my.cnf文件中进行更改,然后重新启动服务器以使max_allowed_packet设置生效。
发布于 2017-02-02 00:53:46
运行后
set global max_allowed_packet=1000000000;您必须重新启动mysql才能
SHOW VARIABLES LIKE 'max_allowed_packet'将显示新值。
我在通过MAC OSX系统偏好设置重启mysql时遇到了这个问题,而且值没有改变。因此,通过控制台登录mysql
mysql -u root -p更改它,然后重启mySql似乎是可行的。不过,这可能是OS的怪癖。
发布于 2019-03-28 21:15:30
对于那些使用MariaDb配置的用户,问题可能是max_allowed_packet变量被稍后调用的配置文件覆盖。
在我的例子中,我试图导入一个数据库,服务器在第736行回答我:ERROR 2006 (HY000):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"
https://stackoverflow.com/questions/9922894
复制相似问题