mysql max_allowed_packet 设置过小导致记录写入失败


今天遇到了一个问题,用户上传资料时,突然报错了。

这里需要上传几张图片 是从app传过来的,图片转成base64img格式的数据,我们知道转成base64的数据后,数据很长,原来也么什么问题,这次不知道突然怎么了,就报错了,虽然通过查阅资料找到了以下的解决方法,但是总感觉别扭,不知道有没有更好的方法处理app传输图片到服务器的办法。


错误代码如下 :

[ 2017-11-03T12:18:00+08:00 ] [ error ] [8]PDOStatement::execute(): send of 8192 bytes 
                    failed with errno=32 Broken pipe
[ error ] [10501]SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger
                     than 'max_allowed_packet' bytes
[ error ] SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger 
                    than 'max_allowed_packet' bytes

mysql根据配置文件会限制server接受的数据包大小。

有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。

查看目前配置

MariaDB [(none)]> show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 1048576    |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+


在命令行修改

MariaDB [(none)]> set global max_allowed_packet = 2*1024*1024*10;
Query OK, 0 rows affected (0.07 sec)

退出 重新进入 

MariaDB [(none)]> show VARIABLES like '%max_allowed_packet%';
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
| max_allowed_packet       | 20971520   |
| slave_max_allowed_packet | 1073741824 |
+--------------------------+------------+
2 rows in set (0.00 sec)

可以看到值已经修改成功了。


然后测试 上传资料。

成功了!



来源: up61技术博客 欢迎分享 (QQ:529857614)

qq交流群:63739043 up61博客-php交流群

上一篇: tp5.带标签的缓存 创建和清除 测试
下一篇: tp5 隐藏index.php