• 一个小问题 关于 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);
  • 相关阅读:
    TouchAction实现连续滑动设置手势密码
    用命令方式启动、停止appium服务和app
    企业软件防火墙iptables
    磁盘分区
    docker-网络
    docker-镜像管理基础
    docker-简单操作
    docker-安装
    python-函数
    find一些常用参数的一些常用实例和一些具体用法和注意事项。
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/9447222.html
Copyright © 2020-2023  润新知