解决:将数据库中的数据类型改为: 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字段。
标签:字节,4000,01461,LONG,插入,1333,oracle From: https://blog.51cto.com/u_13002884/6022295