Mysql语句的长度限制

1 问题说明:

        平时我们在进行批量操作的时候经常会遇到这样一种情况:插入少量数据的时候发现没有任何问题,但是插入大量数据的时候就会报错 Could not execute JDBC batch update,这是因为Mysql语句的长度是有限制的,默认的长度为1M,也就是说(包含insert在内)的语句长度最大不能超过1M。
        具体的数值可以根据sql语句来查看:show VARIABLES WHERE Variable_name LIKE 'max_allowed_packet';

在这里插入图片描述
2 解决方法

我们可以修改mysql的参数来修改sql语句长度的限制
        --在windows-32和windows-64系统下的mysql你需要修改my.ini这个配置文件。
        --在Linux-32系统下的mysql相应的配置文件是my.cnf,Linux-64系统下则是my.conf

找到文件后([mysqld]下),默认的参数应该是:
        max_allowed_packet=1M
        net_buffer_length=2K
修改成自己想要的数值即可。

在这里插入图片描述

3 小结

        在设置参数的方为内,只要插入值长度不超过字段限制,你的语句想写多长就写多长,但是一次插入很多的操作效率是很低的,如果是正常业务,这个表加了锁,其他与这个表的操作就会一直等待,影响业务正常运行,所以通常多了会分成多次插入,这样我觉得才应该是正确的操作。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值