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

问题背景
邮箱表PH_MAILINFO的内容(mailcontent)字段大小设置为varchar2(4000)

当向mailcontent字段中插入的数值大于2000时 便会抛出 Cause: java.sql.SQLException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException

原因:
指用户向数据库执行插入数据操作时,某条数据的某个字段值过长,如果是varchar2类型(最大长度为4000字节)的,当长度超过2000--4000(最大值)之间的时候,oracle会自动将该字段值转为long型的,插入操作失败。

解决方法:
一:从代码中解决:若插入该字段的数据过多 则只取2000长度的数据 substring(0,2000)

二:从数据库中解决:将此字段的类型改为clob或者blob类型;

但是将oracle数据库表中的varchar2类型直接改成clob类型会失败,解决办法如下:new 一个Sql view,执行下列代码:

alter table table_name modify col_name long;
alter table table_name modify col_name clob;

在进行此操作之前需要先备份表的数据,然后清空表中的数据,再修改表的字段属性,最后将数据导入即可。

报错的截图:

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容