轉(zhuǎn)【原文】
數(shù)據(jù)庫:Oracle?9i
數(shù)據(jù)庫字段類型:varchar2(4000)
輸入漢字:大于600字(左右)
問題1:當遇到“java.sql.SQLException:數(shù)據(jù)大小超出此類型的最大值”時...
解決辦法:這是jdbc驅(qū)動的問題,更新一下Oracle的class12.jar驅(qū)動就可以解決(可以用oracle10j)。
問題2:當遇到“ORA-01461:?僅可以為插入?LONG?列的?LONG?值賦值”時...
原因:
???我的數(shù)據(jù)庫字符集應該是UTF-8的,對于UTF-8或歐洲的某些字符集,oracle在存儲時,對于一個字符需要2個或3個字節(jié)的存儲空間,雖然表定義中為varchar2(4000),但是其實該字段的data_length為其2倍或3倍長。這種情況下oracle會把data_length長度超過4000的當做LONG型處理,你的表中有兩個這樣的字段,插入數(shù)據(jù)時相當于同時操作2個LONG字段,所以報錯。
解決辦法:建議減小字段長度或拆分。實在需要的,可以轉(zhuǎn)而采用CLOB字段類型。
還可以把實例的頁大小 變大,一般默認是8K, 可以增加到16K,32K。