SET GLOBAL max_allowed_pa​​cket不起作用

Rik*_*ika 25 mysql linux centos5

我发现了如何使用更改max_allowed_packetMySQL中的默认值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;
Run Code Online (Sandbox Code Playgroud)

然后结果是max_allowed_pa​​cket = 1048576.我错过了什么?

Ash*_*n A 40

嗯..你似乎已经击中了这个NOT-A-BUG.:)

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

请参阅也.阅读Shane Bester的解释.

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


Joh*_*gan 5

跑完之后

set global max_allowed_packet=1000000000;
Run Code Online (Sandbox Code Playgroud)

你必须重新启动mysql

SHOW VARIABLES LIKE 'max_allowed_packet'
Run Code Online (Sandbox Code Playgroud)

将显示新的价值.

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

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

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


Cua*_*uiu 5

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

就我而言,我尝试导入数据库,服务器回答我: ERROR 2006 (HY000) at line 736: MySQL server has gone gone

我发现该文件:

/etc/mysql/mariadb.conf.d/50-server.cnf
Run Code Online (Sandbox Code Playgroud)

稍后调用

/etc/mysql/conf.d/mysql.cnf
Run Code Online (Sandbox Code Playgroud)

我尝试不断更改“mysql.cnf”文件,但该值在“50-server.cnf”中被覆盖。

所以解决办法就是输入文件

/etc/mysql/mariadb.conf.d/50-server.cnf
Run Code Online (Sandbox Code Playgroud)

并代替 “max_allowed_pa​​cket = 16M”, 将所需的值作为示例 “max_allowed_pa​​cket = 64M”