Max_allowed_packet配置

最近服务器经常报Packet for query is too large的错误,心想配置更改过了啊,怎么还会报错。

因为数据库中有存很大的字符串值,很多都有上百MB,所以数据库刚安装好后,就在my.cnf中进行了如下配置:

max_allowed_packet=512M

用了一段时间没有问题,但是最近频频报错。仔细检查了配置,没有错啊,确实是512MB,而且我确定我写入的字符串远远小于512MB。
只好登录mysql使用命令查看

show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 4194304    |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.04 sec)

怪了,我明明配置的是512MB,按理这里应该显示值为:536870912 (512MB*1024*1024)字节。
然后使用locate my.cnf查找my.cnf文件,发现有好几个my.cnf配置文件,一检查,果然mysql用的不是/etc/my.cnf。于是把当前mysql服务使用的那个配置文件更改了下,ok了。

也可以通过下面语句更改

set global max_allowed_packet = 2*1024*1024*10;

不过更改后需要退出后重新登录后才能使用show命令查询到更改的值。

另外,也可以在启动的时候制定配置文件来解决问题:

mysqld_safe --defaults-file=file_name

当然最好的办法是在编译的时候显式制定配置文件:

./configure  --sysconfdir=/etc 

欢迎去我的个人站点查看文章
或者,欢迎关注俺的微信订阅号,每天一篇小笔记,每天提高一点点:

公众号:enilu123
这里写图片描述

猜你喜欢

转载自blog.csdn.net/mooyinn/article/details/50375392
今日推荐