zoukankan      html  css  js  c++  java
  • mysql Got a packet bigger than 'max_allowed_packet' bytes

    背景

    数据库备份执行SQL文件时,执行到图片表插入图片数据时错误:

    190820-mysql-exe-sql-bigger-bytes.png

    错误提示:Got a packet bigger than 'max_allowed_packet' bytes

    原因分析及解决

    max_allowed_packet是什么意思?

    max_allowed_packet 针对的是一个事务中的一行记录大小,当一行记录超过了限制的大小,将会报错。

    sql文件中每次insert完进同一张表的所有数据被称为一个数据包(packet),max_allowed_packet就是来限制这个的大小的阈值,大于这个值,mysql的I/O连接会关闭,就会报这个错。

    查询执行插入的表(filearchive)的大小:

    mysql> select 
    table_schema as '数据库',
    table_name as '表名',
    table_rows as '记录数',
    truncate(data_length/1024/1024, 2) as '数据容量(MB)',
    truncate(index_length/1024/1024, 2) as '索引容量(MB)'
    from information_schema.tables
    where table_schema='zxbdb'
    order by data_length desc, index_length desc;
    +--------+-----------------------------------+--------+--------------+--------------+
    | 数据库 | 表名                              | 记录数 | 数据容量(MB) | 索引容量(MB) |
    +--------+-----------------------------------+--------+--------------+--------------+
    | zxbdb  | filearchive                       |    136 | 14.50        | 0.00         |
    

    可以看到结果是14.5MB,那mysql默认max_allowed_packet的值是多少?

    mysql> show VARIABLES like '%max_allowed_packet%';
    +---------------------------+------------+
    | Variable_name             | Value      |
    +---------------------------+------------+
    | max_allowed_packet        | 4194304    |
    | mysqlx_max_allowed_packet | 67108864   |
    | slave_max_allowed_packet  | 1073741824 |
    +---------------------------+------------+
    3 rows in set, 1 warning (0.00 sec)
    

    可以看到是4MB,明显是超出了。

    怎么修改?有两种方式:

    • 临时修改(mysql 重启后自动恢复默认值):输入命令 set global max_allowed_packet = 30*1024*1024;
    • 永久修改:修改my.ini文件的max_allowed_packet配置;

    参考

  • 相关阅读:
    如何在软件频繁改变时测试?归纳总结
    PE文件格式资源
    PE文件格式重定位
    PEB模块链表Ldr
    PE文件格式导入表和IAT
    PE文件格式导出表
    win32汇编问题指令
    win32汇编问题堆栈
    硬盘基本知识
    SEH异常处理
  • 原文地址:https://www.cnblogs.com/ricolee/p/max_allowed_packet.html
Copyright © 2011-2022 走看看