天天看點

模闆字元串Oracle存儲超長問題:僅能綁定要插入 LONG 列的 LONG 值報錯分析解決方法設定字段類型

報錯

        The error may involve com.cbry.master.dao.JsonDataCollDao.updateRtJsonDsInfo-Inline

        The error occurred while setting parameters

        SQL: update RT_JSON_DS_INFO set xx=xx

         Cause: java.sql.SQLException: ORA-01461: 僅能綁定要插入 LONG 列的 LONG 值

Mybatis插入Oracle資料庫中某條資料的某個字段值過長,如果是varchar2類型的,當長度超過4000(最大值)的時候,oracle會自動将該字段值轉為long類型的資料。

分析

實際上并沒有導4000

模闆字元串Oracle存儲超長問題:僅能綁定要插入 LONG 列的 LONG 值報錯分析解決方法設定字段類型

但是字元化轉換就會有轉義字元:

模闆字元串Oracle存儲超長問題:僅能綁定要插入 LONG 列的 LONG 值報錯分析解決方法設定字段類型

解決方法

用resultMap映射來解決查詢的問題。插入直插即可。

<resultMap type="com.cbry.RtJsonDsInfoPojo" id="rtJsonDsInfoPojo">
    <result column="JSON_DATA_STRING" jdbcType="CLOB" property="jsonDataString" />
</resultMap>  
           

設定字段類型

不可直接通過資料庫圖像管理工具進行修改字段類型:出現: ORA-22858: 資料類型的變更無效 ( invalid alteration of datatype)。

修改方法:新增clob類型字段,并備份舊的類型varchar2字段到其,再删去舊的varchar2字段 , 随後将clob字段名稱改回去。