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