根据意思可以看出 mysql执行的报文过大。需要我们设置允许的最大报文max_allowed_packet;

org.springframework.dao.TransientDataAccessResourceException:
### Error querying database. Cause: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (6,831,159 > 4,194,304).
You can change this value on the server by setting the 'max_allowed_packet' variable
Packet for query is too large (6,831,159 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.;
nested exception is com.mysql.cj.jdbc.exceptions.PacketTooBigException:
Packet for query is too large (6,831,159 > 4,194,304).
You can change this value on the server by setting the 'max_allowed_packet' variable.
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:110)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy137.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)

查询MySQL允许的最大报文的大小

SHOW VARIABLES LIKE '%max_allowed_packet%';

通过命令设置允许最大报文为1G

SET GLOBAL max_allowed_packet = 1024*1024*1024;

由于我们项目不能随便更改MySQL配置 ,这里我没有使用这种方法。在项目中我使用的是分批查询,就是把需要查询的所有数据分开,进行多次查询。相当于分页查询。然后把查询的结果存入一个总集合里面。代码如下:

 //分页查询信息
List<Ment> sumList=new ArrayList<>();
List<String> externalIdList = list.stream().filter(depart -> Objects.nonNull(depart.getId()))
.map(MentVo::getId)
.collect(Collectors.toList());
int pageNum = externalIdList.size() % pageSize == 0 ? externalIdList.size() / pageSize : (externalIdList.size() / pageSize) + 1;for (int i = 0; i < pageNum; i++) {
int start = i * pageSize;
int end = (i + 1) * pageSize > externalIdList.size() ? externalIdList.size() : (i + 1) * pageSize;
List<Ment> list = mentService
.lambdaQuery().in(Ment::getExternalId, externalIdList.subList(start, end)).list();
if (!CollectionUtils.isEmpty(list)){
sumList.addAll(list);
}
}
if (CollectionUtils.isEmpty(sumList)) {
sumList = new ArrayList();
}

记录下容量的运算

解释:

电脑的各种存储器的最小存储单位是比特(bit,简称b也叫位),8个bit一组构成1个Byte(叫字节)。一般键盘上的每个字符占用2个字节,一个汉字一般占用4个字节。

因为bit或Byte太小了,就有了KB、MB、GB、TB等单位,具体按照如下关系换算:

1B=8b
1KB = 1024B
1MB=1024KB,
1GB = 1024MB
1G = 1024*1024*1024

Mysql查询执行报错Packet for query is too large (6,831,159 > 4,194,304)的更多相关文章

  1. MySQL报错Packet for query is too large问题解决

    今天用java写了批量插入运行时,报错: Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.PacketTooBigExcep ...

  2. mysql报错Packet for query is too large (12238 > 1024). You can change this value

    今天将项目部署到linux服务器的时候莫名其妙的报一些错误,可是在本地啥错没有,通过实时查看tomcat 的日志之后发现报错是: 实时查看日志: .先切换到:cd usr/local/tomcat5/ ...

  3. Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable.

    修改 my.ini 加上 max_allowed_packet =6710886467108864=64M默认大小4194304  也就是4M修改完成之后要重启mysql服务,如果通过命令行修改就不用 ...

  4. MySQL查询语句报错 sql_mode=only_full_group_by 问题

    升级MySQL到5.7后,查询语句总是报sql_mode=only_full_group_by问题,总结归纳了两种解决方案,推存第二种解决方案. 报错信息: [Err] 1055 - Expressi ...

  5. com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024)

    ### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1169 > 1024). You ...

  6. mysql Packet for query is too large (1185 > 1024)异常

    注:最近mysql一直提示如下错误 Packet for query is too large (1185 > 1024). You can change this value on the s ...

  7. mysql提示Packet for query is too large (1142 > 1024)解决方案

    注:最近mysql一直提示如下错误 Packet for query is too large (1185 > 1024). You can change this value on the s ...

  8. MySQL查询报错 ERROR: No query specified

    今天1网友,查询报错ERROR: No query specified,随后它发来截图. root case:查询语法错误 \G后面不能再加分号;,由于\G在功能上等同于;,假设加了分号,那么就是;; ...

  9. Mysql报Packet for query is too large (1040 > 1024)错误

    Linux下mysql 报Packet for query is too large (1040 > 1024)错误的解决方法 项目之前一直正常运行,这几天突然一直提示查询出错,看了下日志发现提 ...

  10. MySql报Packet for query is too large错误

    mysql中执行sql的时候报以下错误:Packet for query is too large (1354 > 1024) 原因是mysql一次接收的报文太长,需要调整服务器参数max_al ...

随机推荐

  1. 关于TIdTCPClient的几种方法

    关于TIdTCPClient的几种方法 收藏  其实Indy比较简单,但是可以提供的方法太多了.我找了很久,才搞明白. 比方说这个读取缓冲区的数据,就有很多种方法.相对于TTcpClient的几种方法 ...

  2. 8、HTTP Cookie管理器

    如果有需要加的cookie 就选择添加  如果没有特殊的 就默认就好了 第一次访问是没有cookie的 会话  session Cookie 是明文的  Session  id 是保存在cookie里 ...

  3. Otto Group Product Classification

    遇到的坑: 做多分类,用CrossEntropyLoss时,训练时候的正确标签的范围应该是[0,n-1],而不是[1,n],不然会报 IndexError: Target is out of boun ...

  4. R grep

    SAIN<-FAIN[grepl("HE-H$",FAIN$rDD),,drop=TRUE]

  5. 2.IDEA的快捷键

    1.IDEA代码等式两边自动加空格:ctrl+alt+L

  6. C#测试web服务是否可用(转)

    转摘:http://www.cnblogs.com/xienb/p/3443282.html winform客户端经常需要调用webservice或者WCF进行数据交互,但是远程服务有可能不存在或者服 ...

  7. 转发:TypeScript Monorepo 最佳实践

    当我们跨多个代码仓库管理多个项目之间的依赖关系时,既耗时又容易出错.monorepo 是一种处理上述问题的代码管理架构概念,它将多个项目的所有隔离代码库整合到一个大型存储库中,而不是单独管理它们.当与 ...

  8. docker基本操作 备忘

    docker 基本操作 通过镜像运行容器 - docker run -d -it -p 5555:5555 镜像名 启动容器,并将进入容器中的bash命令行 进入容器 - docker attach ...

  9. spring-dao.xml

    本文件的作用:1整合dao层,连接数据库 2设置数据库连接池3配置SqlSessionFactory对象4配置扫描Dao接口包,动态实现dao接口,注入到spring容器中 Ps:此文件可以替代myb ...

  10. fatal: unable to access ' ' OpenSSL SSL_read: Connection was reset, errno 10054

    描述: git clone ...时报错 fatal: unable to access 'https://github.com/github-eliviate/papers.git/': OpenS ...