最新公告
  • 欢迎您光临三优资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • MySQL Insert数据量过大导致报错 MySQL server has gone away

    接手了同事的项目,其中有一个功能是保存邮件模板(包含图片),同事之前的做法是把图片进行base64编码然后存在mysql数据库中(字段类型为mediumtext)
    然后保存三张图片(大概400k)的时候报错
    MySQL server has gone away

    然后查看官方文档https://dev.mysql.com/doc/ref…

    
    得知可能是以下几个原因 
    服务器超时
    服务器断开
    向服务器发送不正确或太大的查询
    INSERT或者 REPLACE是插入大量行
    

    开始以为是服务器超时导致的,在网上搜的解决办法(好吧,先试一下 ,发现还是不行):

    
    <?php
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
                                            PDO::ATTR_PERSISTENT => true
    ));
    ?>
    Note:
    如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。
    
    

    直接在Navicat上执行sql语句,报错 [Err] 1153 – Got a packet bigger than ‘max_allowed_packet’ bytes
    搜索得知:当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误。
    客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处理大的信息包,必须增加客户端和服务器上的该变量。一般情况下,服务器默认max-allowed-packet为1MB
    这下问题精确定位了,就是max_allowed_packet配置的问题,

    查一下配置 show VARIABLES like ‘%max_allowed_packet%’; 发现是1048576(1024*1024),也就是1MB,
    但是我的图片才400K,不应该啊,然后网上一查:Base64-encoded 数据要比原始数据多占用 33% 左右的空间。
    还是不确定,直接strlen()返回base64字符串长度1451334,utf8编码下英文字符1字符占1字节,所以base64编码后是1451334B(这个是我自己的理解),大于1MB

    修改max_allowed_packet配置 set global max_allowed_packet = 410241024;

    发现问题完美解决

    1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3165260857@qq.com
    2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
    3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
    4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!


    三优资源网 » MySQL Insert数据量过大导致报错 MySQL server has gone away

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    三优资源网
    一个高级程序员模板开发平台

    发表评论

    • 235会员总数(位)
    • 1271资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 1725稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情