ORA-01745: invalid host/bind variable name
这个错误,还真是头一次见。之前也没有那么大的数据量和变量。
分析:
这个异常是因为变量过多引起的。当我们查看执行的sql时,会发现有大量的????,这些都是变量。查看oracle11 的官方文档,明确说明变量的数量不能超过64k。(64k=64*1024B=65536B)。16位的2进制最大的数字,即1111111111111111,换算成10进制就是65536,那么我们计算可以插入的条数 n=65536/变量数。
举例如下:
假如一个表有100个字段,一次插入需要100个变量。
即,一次可插入的条数 = 65536 / 100 约等于 655 条。
若使用mybatis批量插入,分组时注意即可。