【mysql】error code:1206 the total number of locks exceeds the lock table size

在处理大批量数据一次存储在数据库中时,可能会出现这种异常,是由于超过了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了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值