ORA-01745: invalid host/bind variable name

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批量插入,分组时注意即可。

2025-11-06 13:30:31,448 - INFO - 同步时间范围: 2025-11-05 08:30:00 到 2025-11-06 08:30:00 2025-11-06 13:30:31,587 - INFO - 开始同步表: OEE_AvaiableTime, 主键: OEE_AvaiableTimeId 2025-11-06 13:31:14,710 - DEBUG - 即将执行的SQL语句: 2025-11-06 13:31:14,710 - DEBUG - INSERT INTO OEE_AvaiableTime ("OEE_AVAIABLETIMEID", "STARTTIME", "ENDTIME", "DURATION", "TYPE", "OP", "PARTNO", "LOSSREASON", "COMMENT", "SHIFTWORKTIMEID", "CREATEAT", "UPDATEAT", "BYUSER") VALUES (:OEE_AvaiableTimeId, :StartTime, :EndTime, :Duration, :Type, :op, :PartNo, :LossReason, :comment, :ShiftWorkTimeId, TO_DATE(:CreateAt_date, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(:UpdateAt_date, 'YYYY-MM-DD HH24:MI:SS'), :ByUser) 2025-11-06 13:31:14,712 - DEBUG - 绑定参数: 2025-11-06 13:31:14,712 - DEBUG - {'OEE_AvaiableTimeId': '7c602b6e-1b3e-406f-a55f-915fa14cf4a5', 'StartTime': '133', 'EndTime': '139', 'Duration': 30, 'Type': '14', 'op': None, 'PartNo': None, 'LossReason': None, 'comment': None, 'ShiftWorkTimeId': 'f0fc7598-ed04-4116-a854-edc694e8c9b6', 'CreateAt_date': '2025-11-05 08:20:53', 'UpdateAt_date': '2025-11-05 13:32:29', 'ByUser': 'AD'} 2025-11-06 13:31:14,712 - DEBUG - 调试格式的SQL: 2025-11-06 13:31:14,712 - DEBUG - INSERT INTO OEE_AvaiableTime ("OEE_AVAIABLETIMEID", "STARTTIME", "ENDTIME", "DURATION", "TYPE", "OP", "PARTNO", "LOSSREASON", "COMMENT", "SHIFTWORKTIMEID", "CREATEAT", "UPDATEAT", "BYUSER") VALUES ('7c602b6e-1b3e-406f-a55f-915fa14cf4a5', '133', '139', '30', '14', 'None', 'None', 'None', 'None', 'f0fc7598-ed04-4116-a854-edc694e8c9b6', TO_DATE('2025-11-05 08:20:53', 'YYYY-MM-DD HH24:MI:SS'), TO_DATE('2025-11-05 13:32:29', 'YYYY-MM-DD HH24:MI:SS'), 'AD') 2025-11-06 13:31:19,464 - ERROR - 插入出错: ORA-01745: invalid host/bind variable name Help: https://docs.oracle.com/error-help/db/ora-01745/ 2025-11-06 13:31:21,947 - ERROR - 问题SQL: INSERT INTO OEE_AvaiableTime ("OEE_AVAIABLETIMEID", "STARTTIME", "ENDTIME", "DURATION", "TYPE", "OP", "PARTNO", "LOSSREASON", "COMMENT", "SHIFTWORKTIMEID", "CREATEAT", "UPDATEAT", "BYUSER") VALUES (:OEE_AvaiableTimeId, :StartTime, :EndTime, :Duration, :Type, :op, :PartNo, :LossReason, :comment, :ShiftWorkTimeId, TO_DATE(:CreateAt_date, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(:UpdateAt_date, 'YYYY-MM-DD HH24:MI:SS'), :ByUser) 2025-11-06 13:31:24,426 - ERROR - 参数: {'OEE_AvaiableTimeId': '7c602b6e-1b3e-406f-a55f-915fa14cf4a5', 'StartTime': '133', 'EndTime': '139', 'Duration': 30, 'Type': '14', 'op': None, 'PartNo': None, 'LossReason': None, 'comment': None, 'ShiftWorkTimeId': 'f0fc7598-ed04-4116-a854-edc694e8c9b6', 'CreateAt_date': '2025-11-05 08:20:53', 'UpdateAt_date': '2025-11-05 13:32:29', 'ByUser': 'AD'}
11-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值