截取部分日志信息:

2015-09-01 14:48:47,132 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
2015-09-01 14:48:47,178 INFO [org.springframework.jdbc.support.SQLErrorCodesFactory] - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
org.springframework.jdbc.UncategorizedSQLException:
### Error updating database. Cause: java.sql.SQLException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值

查找原因:

报异常原因:向数据库执行插入日志数据操作时,user_agent字段值过长,如果是varchar2类型的,varchar2类型最大长度是4000,当超过4000,oracle会自动将该字段值转为long型的,然后,插入操作失败。解决办法是:将此字段的类型改为clob或者blob类型;

下面是解决办法【因为之前这张表中有数据,所以新添加一列,进行复制数据】:

--添加一个clob类型字段 ,clob不需指定长度
alter table log_access add (userAgent_bak  clob);

--将原来的值拷贝到新建的字段

update log_access a set a.useragent_bak = a.user_agent;

--删除原来的字段
alter table log_access drop column useragent_bak

--将新建的clob字段修改为原来的字段名称
alter table log_access rename column useragent_bak to user_agent

commit。

一直考虑着新增字段,修改字段类型,其实插入的数据是日志信息,一些数据可以通过后台进行截取,这样就不用修改字段类型了。

网上看到造成该问题的原因,收集如下:

报错“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”,可能有以下几种原因:
1、插入到字符串长度大于4000字节。
2、插入到表中的记录的某个字段数据的实际长度大于2000个字节(如果是UTF-8,则是1333个字节);或者是插入的记录中有两个或两个以上长度大于2000字节的字符串。
3、数据库与客户端的JDBC驱动不匹配。
对于UTF-8或欧洲的某些字符集,oracle在存储时,对于一个字符需要2个或3个字节的存储空间,虽然表定义中为varchar2(4000),但是其实该字段的data_length为其2倍或3倍长。这种情况下oracle会把data_length长度超过4000的当做LONG型处理,你的表中有两个这样的字段,插入数据时相当于同时操作2个LONG字段。

clob与blob的区别:

1.BLOB

BLOB全称为二进制大型对象(Binary   Large   Object)。它用于存储数据库中的大型二进制对象。可存储的最大大小为4G字节

2.CLOB   
CLOB全称为字符大型对象(Character   Large   Object)。它与LONG数据类型类似,只不过CLOB用于存储数据库中的大型单字节字符数据块,不支持宽度不等的字符集。可存储的最大大小为4G字节

最新文章

  1. 在ionic/cordova中使用百度地图插件
  2. Android UI设计中一些不错的示例及第三方控件
  3. hdu5432 二分
  4. JQuery对象操作支持链式法则源码分析
  5. [转]使用CSS3实现树形控件
  6. 【NOI2001】炮兵阵地
  7. 【并查集专题】【HDU】
  8. IPicture总结
  9. javascript限制input只允许输入数字
  10. LeetCode 189. Rotate Array (旋转数组)
  11. linux系统ubuntu18.04安装mysql(5.7)
  12. jQuery中$.each()方法的使用
  13. [Swift]LeetCode816. 模糊坐标 | Ambiguous Coordinates
  14. java多线程系列 目录
  15. 桌面小部件Wight父类AppWidgetProvider的三个方法
  16. Oracle初级索引学习总结
  17. uploadify是通过flash上传,服务器获取type为application/octet-stream
  18. java中的装箱与拆箱
  19. QoS专题-第1期-QoS理论篇
  20. pytorch中的cat、stack、tranpose、permute、unsqeeze

热门文章

  1. Wannafly挑战赛2 D.Delete(拓扑排序 + dij预处理 + 线段树维护最小值)
  2. MySQL中数据类型(char(n)、varchar(n)、nchar(n)、nvarchar(n)的区别)(转)
  3. fastscripT实现权限控制
  4. [MFC]选择目录对话框和选择文件对话框 [转]
  5. 仰视源代码,实现strcpy
  6. 从头写一个Cucumber测试(二) Cucumber Test
  7. 使用 rman duplicate from active database 搭建dataguard 手记--系列二
  8. Hibernate中的条件查询完毕类
  9. Cursor类用法:
  10. python(28)- 面向对象练习Ⅱ