首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置全局max_allowed_packet不起作用

设置全局max_allowed_packet不起作用
EN

Stack Overflow用户
提问于 2012-03-29 17:46:56
回答 5查看 84.3K关注 0票数 28

我了解了如何使用SET GLOBAL在MySQL中更改max_allowed_packet的默认值。但是,每次我使用这个命令时,默认值都保持不变!我使用了以下命令:

代码语言:javascript
复制
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。我遗漏了什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-29 17:57:10

嗯..。看起来你已经命中了这个NOT-A-BUG。:)

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

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

您应该从my.ini/my.cnf文件中进行更改,然后重新启动服务器以使max_allowed_packet设置生效。

票数 44
EN

Stack Overflow用户

发布于 2017-02-02 00:53:46

运行后

代码语言:javascript
复制
set global max_allowed_packet=1000000000;

您必须重新启动mysql才能

代码语言:javascript
复制
SHOW VARIABLES LIKE 'max_allowed_packet'

将显示新值。

我在通过MAC OSX系统偏好设置重启mysql时遇到了这个问题,而且值没有改变。因此,通过控制台登录mysql

代码语言:javascript
复制
mysql -u root -p

更改它,然后重启mySql似乎是可行的。不过,这可能是OS的怪癖。

票数 6
EN

Stack Overflow用户

发布于 2019-03-28 21:15:30

对于那些使用MariaDb配置的用户,问题可能是max_allowed_packet变量被稍后调用的配置文件覆盖。

在我的例子中,我试图导入一个数据库,服务器在第736行回答我:ERROR 2006 (HY000):MySQL服务器已经离开了

我发现这个文件:

代码语言:javascript
复制
/etc/mysql/mariadb.conf.d/50-server.cnf

将在稍后调用

代码语言:javascript
复制
/etc/mysql/conf.d/mysql.cnf

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

因此,解决方案是输入该文件

代码语言:javascript
复制
/etc/mysql/mariadb.conf.d/50-server.cnf

并且不使用"max_allowed_packet = 16M",而是将所需的值作为示例"max_allowed_packet = 64M"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9922894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档