Mysql查询执行报错Packet for query is too large (6,831,159 > 4,194,304)
根据意思可以看出 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)的更多相关文章
- MySQL报错Packet for query is too large问题解决
今天用java写了批量插入运行时,报错: Error updating database. Cause: com.mysql.cj.jdbc.exceptions.PacketTooBigExcep ...
- mysql报错Packet for query is too large (12238 > 1024). You can change this value
今天将项目部署到linux服务器的时候莫名其妙的报一些错误,可是在本地啥错没有,通过实时查看tomcat 的日志之后发现报错是: 实时查看日志: .先切换到:cd usr/local/tomcat5/ ...
- 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服务,如果通过命令行修改就不用 ...
- MySQL查询语句报错 sql_mode=only_full_group_by 问题
升级MySQL到5.7后,查询语句总是报sql_mode=only_full_group_by问题,总结归纳了两种解决方案,推存第二种解决方案. 报错信息: [Err] 1055 - Expressi ...
- 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 ...
- 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 ...
- 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 ...
- MySQL查询报错 ERROR: No query specified
今天1网友,查询报错ERROR: No query specified,随后它发来截图. root case:查询语法错误 \G后面不能再加分号;,由于\G在功能上等同于;,假设加了分号,那么就是;; ...
- Mysql报Packet for query is too large (1040 > 1024)错误
Linux下mysql 报Packet for query is too large (1040 > 1024)错误的解决方法 项目之前一直正常运行,这几天突然一直提示查询出错,看了下日志发现提 ...
- MySql报Packet for query is too large错误
mysql中执行sql的时候报以下错误:Packet for query is too large (1354 > 1024) 原因是mysql一次接收的报文太长,需要调整服务器参数max_al ...
随机推荐
- IT工具知识-10:Markdown小技巧(不断更新)
Markdown小技巧 1. 如何实现在文内不同关键字间跳转 该技巧是基于typora软件下使用的,参考的这个教程:视频链接 该教程有两种跳转方式:一.使用Markdown语法,二.使用HTML的锚点 ...
- sqlserver 数据导入MySQL
sqlserver导出成Excel文件数据 为什么用Excel文件数据? sql文件不通用 CVS文件编码报错 text文件日期/时间戳报错 修改Excel文件中的日期字段 需要格式化日期字段为 yy ...
- C语言编译概念理解
1.编译与CPU.操作系统的联系 参考:https://blog.csdn.net/dong_daxia/article/details/95328479?ops_request_misc=%257B ...
- Inno 设置文件或注册表ACL(访问控制权限)
欢迎访问我的个人博客:xie-kang.com 在[Files]区段或者[Registry]区段中可以设置Permissions属性,从而达到指定操作ACL(访问控制权限),使用方法如下: <用 ...
- Node.js server使用
一.创建项目 #创建项目目录 cd /data mkdir webroot cd webroot #初始化git git init vim .gitignore 输入: node_modules/ 保 ...
- mxnet的broadcast_power() 注释错误
用relationnet时,发现broadcast_power()的源码中的注释如下: 官方文档中的注释如下: 怎么算都算不出它这个结果... 自己用mxnet实验了一把,发现是注释错了,代码如下:
- CSS clip-path 属性
属性定义及使用说明 clip-path 属性使用裁剪方式创建元素的可显示区域.区域内的部分显示,区域外的隐藏.可以指定一些特定形状. 注意: clip-path 属性将替换已弃用的 clip 属性. ...
- 整合Swagger2
整合Swagger2 1.Swagger介绍 前后端分离开发模式中,api文档是最好的沟通方式. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web ...
- CentOS /RHEL 系统更新安全补丁的方法
在 Linux 系统上,其中一个最重要的需求就是保持定期更新最新的安全补丁,或者为相应的 Linux 版本更新可用的安全补丁.在这篇文章中,我们将分享如何在 CentOS/RHEL 7/6 版本中设置 ...
- 使用EFCore的Code First和MySql数据库迁移
1. 感慨一下 随着.net core的持续更新和升级,至少对于从事.net开发的人员和即将踏入这个领域的人来说,我相信大家的热情还是持续高涨的.国内的.net开发生态相比于之前来说,还是大有所好转的 ...