oracle ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


解决:将数据库中的数据类型改为: CLOB(存字符串大文本) 或者 BLOB(存二进制文件)

博主问题场景:批量插入图片数据,图片太大,每张图片超过了4000字节,就会报错。将VARCHAR2修改为clob/blob类型还是报这个错。

博主解决方式:将批量插入修改为循环插入,即可解决

注意:如果数据量小,可以改为循环插入,如果数据量大,还是建议批量插入。批量插入具体如何解决,暂时没找到解决方案。

----------------------------------------------以下可以不看----------------------------------------------

问题分析:

1、插入到字符串长度大于4000字节。

2、插入到表中的记录的某个字段数据的实际长度大于2000个字节(如果是UTF-8,则是1333个字节);或者是插入的记录中有两个或两个以上长度大于2000字节的字符串。(本次我遇到的问题就是在数据库中存储的是中文,超过1333个字节插入数据库就失败了,所以应该在controller层入参校验做判断,判断大于1333个字节就拦截,然后返给前端)

3、数据库与客户端的JDBC 驱动不匹配。对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为 varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过 4000的当做LONG型处理,你的表中有两个这样的字段,插入数据时相当于同时操作2个LONG字段。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: oracle