常见问题
- 现象:批量场景下通过preparedStatement对象多次绑定参数时,出现以下报错:
java.lang.RuntimeException: java.sql.BatchUpdateException: Batch entry 0 - 5 insert into test_batch1(v1,v2) values(('1'),('value2_0')) was aborted: [*.*.*.*:*/*.*.*.*:*] ERROR: invalid input syntax for integer: "ss" Call getNextException to see other errors in the batch.
原因:批量插入场景下,如果绑定参数据类型和第一次绑定的参数类型不一致,会执行失败。
处理方法:使用preparedStatement批量插入场景下,绑定参数的数据类型要保持一致。
- 现象:preparedStatement执行批量插入返回的结果数组results,返回结果与Oracle不一致。
原因:batchMode=on时,JDBC使用了GaussDB独有的报文处理逻辑,逻辑不一致但速度会更快,可以在连接串设置参数batchMode=off使返回结果与Oracle保持一致。
设置batchMode=on,基于完整示例的结果,results内容如下所示,与Oracle相应接口返回的结果表现不一致。[5, 0, 0, 0, 0]
Oracle结果如下所示:[1, 1, 1, 1, 1]
设置batchMode=off参数后,与Oracle相应接口返回的结果表现一致。
[1, 1, 1, 1, 1]