zoukankan      html  css  js  c++  java
  • 一个小问题 关于 com.mysql.jdbc.PacketTooBigException: Packet for query is too large

    这个错本身就是应为传输的数据大于mysql的max_allowed_packet参数默认值造成的;

    之前遇到这个问题,一直是改max_allowed_packet的值 ,做项目遇到这个错误改了好几次,从1M改到10M,10M改到50M,50M又不够了;没有考虑到增量数据的问题,有的数据是一直增长的。

    所以解决这个问题的根本,是需要在程序中,做分批次插入;

    //data 为需要入库的数据,持续增长中目前3万多行,需要切分为几个list
    LinkedList<LinkedHashMap<String,Object>> data=new LinkedList<LinkedHashMap<String,Object>>();
    .....
    //收集数据 data.add(xxxx)
    ......
    //入库 HashMap<String,Object> map= new HashMap<>(); map.put("table_name", "tbl_consistency_check"); consCheckDao.truncateTable(map); //分批次入库(一批3000行) Integer size=data.size(); Integer batches_size=3000; Integer num=size/batches_size; for(int i=0;i<num;i++) { List<LinkedHashMap<String, Object>> tmp= data.subList(0, batches_size); map.put("data", tmp); consCheckDao.insertConCheckTable(map); data.subList(0, batches_size).clear(); } List<LinkedHashMap<String, Object>> tmp_2= data.subList(0, data.size()); map.put("data", tmp_2); consCheckDao.insertConCheckTable(map);
  • 相关阅读:
    算法第五章作业
    算法第四章作业
    算法第四章上机实践报告
    算法第三章作业——动态规划
    算法第三章上机实践报告
    分治法的思想与体会
    算法第二章上机实践报告
    c++代码规范及《数学之美》读后感
    bugkuctf web部分(前8题)解题报告
    第二次博客作业
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/9447222.html
Copyright © 2011-2022 走看看