下面是MySQL实际应用中遇到的问题及解决方案
问题场景
游戏开发中的捏脸功能,角色可以编辑英雄的面部,对于服务器而言只需要存储面部数据即可,这块面部数据较大,当执行update语句更新数据库时, 返回如下错误
error_desc:Got a packet bigger than 'max_allowed_packet' bytes
可以推测这个update数据包太大了,查看MySQL这个变量的值:
show variables like '%max_allowed_packet%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| max_allowed_packet | 2048 |
| slave_max_allowed_packet | 2048 |
+--------------------------+-------+
这个变量是2KB,显然太小了
解决方案
临时设置这个变量
set global max_allowed_packet=152428800(必须是字节大小);
终极方案是修改MySQL配置文件,也就是my.cnf
[mysqld]
max_allowed_packet=1M
注意修改配置文件可以是以M为单位,重启MySQL服务
service mysqld stop
service mysqld start
再次更新捏脸数据,成功更新