SET GLOBAL max_allowed_pa​​cket不起作用

时间:2012-03-29 09:46:56

标签: mysql linux centos5

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

5 个答案:

答案 0 :(得分:39)

嗯......你似乎已经点击了NOT-A-BUG。 :)

  

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

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

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

答案 1 :(得分: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的怪癖。

答案 2 :(得分:1)

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

SHOW VARIABLES LIKE 'max_allowed_packet'

答案 3 :(得分:1)

我也遇到了这个问题,就我而言,我安装了多个版本的MySql。 为可能在 mac 上使用homebrew设置MySql并在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

自从我通过Home brew安装MySql 5.6以来,我就在-

/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

  • 使用brew服务重启mysql-

    brew services restart mysql@5.6

  • 连接/重新连接到mysql shell并使用-验证配置已生效

    show variables like 'max_allowed_packet';

答案 4 :(得分:0)

对于具有MariaDb配置的用户,问题可能是 max_allowed_pa​​cket 变量被稍后称为的配置文件覆盖。

在我的情况下,我尝试导入数据库,服务器回答了我: 第736行的错误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_pa​​cket = 1600万” 以期望值为例 “ max_allowed_pa​​cket = 64M”