我的ORACLE表里没有long字段,可是保存时报错: 



ORA-01461 :仅可以为插入LONG列的LONG值赋值 





本来我这张表里只有一个VARCHAR2(4000)的字段,一直没有这种错误发生,后来我把另一个字段长度调整为VARCHAR2(4000),这错误就开始发生了。 





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

建议减小字段长度或拆分 



案例2: 



今天接到开发人员报告:在用jdbc导入数据时遇到ORA-01461 

ORA-01461 can bind a LONG value only for insert into a LONG column 



Cause: An attempt was made to insert a value from a LONG datatype into another datatype. This is not allowed. 



Action: Do not try to insert LONG datatypes into other types of columns. 



这个错误一般发生在插入或者更新Varchar2类型的字段 





实际引起这个错误的主要原因是字符集问题及字符串长度到原因,根据本人遇到到情况一共分两种: 

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

2、插入到表中的记录其中一个是long类型、还有其他实际长度大于2000个字节(如果是UTF-8,则是1333个字节);或者是插入的记录中有两个或两个以上长度大于2000字节的字符串 



用以下SQL可以查出有可能引起ORA-01461错误的表: 

SELECT * FROM 

(SELECT TABLE_NAME, OWNER, count(*) NUM 

FROM DBA_TAB_COLUMNS 

WHERE DATA_TYPE='LONG' 

OR (( DATA_TYPE='VARCHAR2' 

or DATA_TYPE='CHAR' 

or DATA_TYPE='NVARCHAR2' 

or DATA_TYPE='NCHAR') 

AND DATA_LENGTH > 1333) 

AND OWNER NOT IN 

('SYS','SYSTEM','SH','OLAPSYS','MDSYS','WKSYS','ODM','XDB','WMSYS') 

GROUP BY TABLE_NAME, OWNER) 

WHERE NUM > 1 





在本例中,更好是插入到记录有2个字段长度大于2000,由于数据库字符集不可更改,故结合实际业务逻辑,将插入记录到其中一个字符串长度缩减在2000字节以下,解决连问题.

最新文章

  1. DDD 领域驱动设计-商品建模之路
  2. grunt自定义任务——合并压缩css和js
  3. 转载文章——从HelloWorld学习操作系统
  4. 配置VNC
  5. Fragment 操作原理
  6. linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
  7. VB datagrid指定行着色
  8. 【M31】让函数根据一个以上的对象类型来决定如何虚化
  9. jstl if条件判断字符串代码
  10. 暴雪hash算法
  11. SSM整合中遇到的不能扫描注解的bug
  12. java的WindowBuilder可视化插件
  13. 5分钟教你玩转 sklearn 机器学习(上)
  14. geoserver安装部署步骤
  15. Android ADB命令 adb devices 出现error:protocol fault (no status)
  16. 小程序animation动画效果(小程序组件案例)
  17. Apache Shiro在web开发安全框架中的应用
  18. Linux搭建svn服务
  19. go语言基础之闭包的特点
  20. python中的各种符号

热门文章

  1. APP测试关注的点 - 笔记
  2. C基础 带你手写 redis ae 事件驱动模型
  3. dp--分组背包 P1757 通天之分组背包
  4. 谷歌 notification 测试 页面
  5. 题解【[CQOI2017]小Q的棋盘】
  6. Redis5新特性Streams作消息队列
  7. 熟练使用WebApi开发
  8. 干货 | 调用AI api 实现网页文字朗读
  9. numpy(一)
  10. Linux环境系列 之【配置虚拟机】