springboot项目中,我使用jdbc批量插入时,报错:
com.oceanbase.jdbc.internal.util.exceptions.MaxAllowedPacketException: query size (4194308) is >= to max_allowed_packet (4194304)
我用obclient设大了这个参数值,byte数增加10倍,设为41943040:
obclient> SET GLOBAL max_allowed_packet=41943040;
这时再用jdbc运行批量插入语句,又报这个错了:
java.sql.SQLNonTransientConnectionException: (conn=2388917) packet sequence mismatch, expected obSeqNo=3, but received obSeqNo=1 at com.oceanbase.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:122) ~[oceanbase-client-2.4.3.jar:?]
如何才能使jdbc批量插入执行正常,请老师们指导一哈。感恩您!
补充:
看管网介绍说, max_allowed_packet这个参数,客户端与 Server 端一般均需要调整。
所以, 个人分析有没有可能,我需要在application.yml的数据源url或者其他参数中设置max_allowed_packet参数呢?且暂时没找到如何设置!
解决了,总结下
一、社区版-v4.1.0.1
1)增大max_allowed_packet值,
obclient> SET GLOBAL max_allowed_packet=自己根据情况定义,单位为byte;
2)方法一:jdbc链接增加useOceanBaseProtocolV20=false ##不使用ob2.0协议
方法二:jdbc链接增加useServerPrepStmts=true ##使用服务器prepare
二、社区版-v4.2.1.1
增大max_allowed_packet值即可:
obclient> SET GLOBAL max_allowed_packet=自己根据情况定义,单位为byte;