在处理大批量数据一次存储在数据库中时,可能会出现这种异常,是由于超过了MySQL缓冲池字节大小的限制,下面看解决办法:
执行命令:
show variables like "%_buffer_pool_size%";
看下当前的缓冲池字节大小限制是多少,默认的innodb_buffer_pool_size是8388608,
那么就要修改 innodb_buffer_pool_size的值,我修改的是3G。
3G = 3 x 1024 x 1024 x 1024 = 67108864;
执行命令
SET GLOBAL innodb_buffer_pool_size=67108864;
可以再重复第一步的步骤,再查看一下,看下是否修改成功,下来就可以正常处理大批量数据了。
有时候特别长的sql会被截取掉,这个时候就要设置这个参数,
max_allowed_packet
找到配置文件,修改大一点,就可以
SET GLOBAL max_allowed_packet=50 x 1024 x 1024; 这是50M,一般肯定够了
有时候不仅处理大数据表,在使用group_concat时还会遇到很长的列,这个时候也会报错,过长的字符串会被截掉。
下来看处理办法:
show variables like 'group_concat_max_len'
默认一般都是1024,我们改大点
SET SESSION group_concat_max_len = 102400
如果修改后还不生效,就需要手动找到MySQL安装目录下的my.ini文件,配置一个
group_concat_max_len = 102400
就好了,里边都是键值对配置,一看就能明白,然后重启一下MySQL服务,就OK了