SET GLOBAL max_allowed_pa cket不起作用

问题描述 投票:24回答:4

我发现如何使用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_pa​​cket = 1048576.我错过了什么?

mysql linux centos5
4个回答
39
投票

嗯..你似乎打了这个NOT-A-BUG。 :)

如果更改全局系统变量,则会记住该值并将其用于新连接,直到服务器重新启动。 (要使全局系统变量设置为永久性,应将其设置在选项文件中。)对于访问该全局变量的任何客户端,此更改都是可见的。但是,更改仅影响更改后连接的客户端的相应会话变量。全局变量更改不会影响当前连接的任何客户端的会话变量(甚至不会影响发出SET GLOBAL语句的客户端的会话变量)。

也请参考this。阅读Shane Bester的解释。

您应该从my.ini / my.cnf文件更改并重新启动服务器以使max_allowed_pa​​cket设置生效。


5
投票

跑完之后

set global max_allowed_packet=1000000000;

你必须重新启动mysql

SHOW VARIABLES LIKE 'max_allowed_packet'

将显示新的价值。

我通过MAC OSX系统首选项重新启动mysql时出现此问题,并且值未更改。所以通过控制台登录mysql

mysql -u root -p

更改它,然后重新启动mySql似乎工作。可能是OS X的怪癖。


1
投票

只是快速查看遇到此问题的人的变量。要获得价值,您需要运行

SHOW VARIABLES LIKE 'max_allowed_packet'

0
投票

对于那些使用MariaDb配置的人来说,问题可能是max_allowed_pa​​cket变量被稍后调用的配置文件覆盖。

在我的情况下,我试图导入一个数据库,服务器回答我:ERROR 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_pa​​cket = 16M”将所需的值作为示例“max_allowed_pa​​cket = 64M”

© www.soinside.com 2019 - 2024. All rights reserved.