zoukankan      html  css  js  c++  java
  • Mysql报Packet for query is too large (1040 > 1024)错误

    Linux下mysql 报Packet for query is too large (1040 > 1024)错误的解决方法

    项目之前一直正常运行,这几天突然一直提示查询出错,看了下日志发现提示Packet for query is too large (1040 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.错误。百度了解决方法,记录下解决过程。

    1.原因

    查询数据库返回的数据包太大,超过了默认值。

    登录mysql,在控制台输入一下命令查询默认的max_allowed_packet值,发现只有1024

    [sql] view plain copy
     
    1. show VARIABLES like '%max_allowed_packet%';  

    2.修改默认最大允许包大小

    2.1方式一:命令方式

    (1).在mysql控制台下输入以下命令,设置max_allowed_packet为20M

    [sql] view plain copy
     
    1. set global max_allowed_packet = 20*1024*1024;  

    (2).退出mysql,重启mysql服务,再登录myql中查询max_allowed_packet是否修改成功

    [sql] view plain copy
     
    1. show VARIABLES like '%max_allowed_packet%';  

    2.2方式二:修改配置文件my.cnf方式

    (1).mysql控制台下输入以下命令,编辑my.cnf
    [plain] view plain copy
     
    1. sudo vi  /etc/mysql/my.cnf  
    (2).在[mysqId]下面添加
    [plain] view plain copy
     
    1. max_allowed_packet = 20M  
    2.2退出编辑模式,重启mysql,步骤如2.1的(2)所示

    3.注

    配置完查询max_allowed_packet发现是16777216,实际上是16*1024*1024,并不是期望的20M,于是又查了下,可能是服务器内存容量不够,因为java就占了很多,所以mysql可能会自动重设参数。所以某些情况下可能是你当时更改完max_allowed_packet参数,过一段时间mysql自动重设参数变为默认的1024,又出现了同样的错误。
     
     
     
     
    注意事项:
    1、 max_allowed_packet的值最大为1G,设置的值必须为1024的倍数
    2、设置完后,需要退出mysql,重新进入才能看到设置后的值 
  • 相关阅读:
    Java基础系列1:Java基本类型与封装类型
    深入理解设计模式六大原则
    分布式系统ID生成方案汇总
    微服务入门
    Web攻击技术
    Jedis与Redisson选型对比
    Hystrix分布式系统限流、降级、熔断框架(二)
    可重入锁ReentrantLock实现原理
    Hystrix分布式系统限流、降级、熔断框架(一)
    Redis过期策略、持久化、集群与常见缓存问题
  • 原文地址:https://www.cnblogs.com/fan-yuan/p/9089223.html
Copyright © 2011-2022 走看看