美文网首页
ORA-01461: 仅能绑定要插入 LONG 列的 LONG

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

作者: wifi四姨 | 来源:发表于2017-10-20 14:38 被阅读0次

    问题背景
    邮箱表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

    相关文章

      网友评论

          本文标题:ORA-01461: 仅能绑定要插入 LONG 列的 LONG

          本文链接:https://www.haomeiwen.com/subject/tmcvuxtx.html