Sweety

Practice makes perfect

导航

mysql配置修改

Posted on 2017-11-22 20:59  蓝空  阅读(615)  评论(0编辑  收藏  举报

问题

今天写数据库(MySQL)然而出现的

Got a packet bigger than‘max_allowed_packet’bytes

瞬间懵逼???
输出看一下,原来真的是超出了MySQL里面的最大长度限制,具体可如下查看:

进入MySQL后:
mysql> show variables like "%max_allow%"
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 4194304    |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+

而我的长度恰恰大于这个数值,然后确定是这个问题,原因是数据库内置配置的问题。。。修改!!!

解决方法

修改配置文件

方法一:

  1. 可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
max_allowed_packet = 20M

如果找不到my.cnf可以通过mysql –help | grep my.cnf去寻找my.cnf文件。(通常我自己的操作是直接find / -name ‘my.cnf’
2. 重启mysql服务
3. 执行命令查看是否成功

SHOW VARIABLES LIKE '%max_allowed_packet%'

方法二:

使用命令修改max_allowed_packet 大小
1. 执行命令

SET GLOBAL max_allowed_packet = 2*1024*1024*10 -- 单位为B

.
2. 然后关闭掉这此链接,再进入执行命令

mysql> SHOW VARIABLES LIKE '%max_allowed_packet%
///现在的结果是:
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 20971520   |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+

上面我的是第一种方法修改后不生效,然后只能使用第二种。。。根据网上说法,具体问题如下:

根据自身经验和网上论坛帖子,第二种方法出现问题的概率相对较小。第一种我在最近的一次设置上,不起作用,使用第二种方式就没有问题,
第一种通过修改配置文件之后,max_allowed_packet 的值 不定期的自动改变, 网上对于这种解释是因为mysql内存不足,导致的
第二种修改配置文件之后,max_allowed_packet 的值 之后,没有生效,重启也没有生效,一种问题是本地的客户端与mysql服务器没有断开查询的,重新链接,查看是否生效,如果没有生效,使用第二种方式,进行修改