我在系統的一個頁面上加載一個.xml文件時,出現了這個錯誤。
原因:
當插入數據的長度在1000、2000內,就會拋出這樣的錯誤。
解決方法:
思路:將存儲的字符串補上空格,讓其超過2000的長度即可,但僅限與緊急解決問題。
1、首先在.java文件中引入import org.apache.commons.lang.StringUtils;
2、在此.java文件的相應的方法里添加如下判斷:
// 處理ora-1461問題(clob長度在1000-2000之間會出錯)
if (xml.length() >= 1000 && xml.length() <= 2000) {
xml = StringUtils.rightPad(xml, 2008);
}
相關知識:
LONG: 可變長的字符串數據,最長2G,LONG具有VARCHAR2列的特性,可以存儲長文本一個表中最多一個LONG列
LONG RAW: 可變長二進制數據,最長2G
CLOB: 字符大對象Clob 用來存儲單字節的字符數據
NCLOB: 用來存儲多字節的字符數據
BLOB: 用于存儲二進制數據
BFILE: 存儲在文件中的二進制數據,這個文件中的數據只能被只讀訪。但該文件不包含在數據庫內。bfile字段實際的文件存儲在文件系統中,字段中存儲的是文件定位指針.bfile對oracle來說是只讀的,也不參與事務性控制和數據恢復。
其中CLOB,NCLOB,BLOB都是內部的LOB(Large Object)類型,最長4G,沒有LONG只能有一列的限制。要保存圖片、文本文件、Word文件各自最好采用那種數據類型呢?BLOB最好,LONG RAW也不錯,但Long是oracle將要廢棄的類型,因此建議用BLOB。
相關鏈接:http://www.aygfsteel.com/allen-zhe/archive/2008/05/06/198627.html
posted @ 2009-04-18 13:01 斷點 閱讀(676) | 評論 (0)