環(huán)境:
數(shù)據(jù)庫:Oracle 9i
數(shù)據(jù)庫字段類型:varchar2(4000)
輸入漢字:大于1000字
問題1:當(dāng)遇到“java.sql.SQLException:數(shù)據(jù)大小超出此類型的最大值”時(shí)...
解決辦法:這是jdbc驅(qū)動(dòng)的問題,更新一下Oracle的class12.jar驅(qū)動(dòng)就可以解決。
問題2:當(dāng)遇到“ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值”時(shí)...
原因:
?? 我的數(shù)據(jù)庫字符集應(yīng)該是UTF-8的,對(duì)于UTF-8或歐洲的某些字符集,oracle在存儲(chǔ)時(shí),對(duì)于一個(gè)字符需要2個(gè)或3個(gè)字節(jié)的存儲(chǔ)空間,雖然表定義中為varchar2(4000),但是其實(shí)該字段的data_length為其2倍或3倍長(zhǎng)。這種情況下oracle會(huì)把data_length長(zhǎng)度超過4000的當(dāng)做LONG型處理,你的表中有兩個(gè)這樣的字段,插入數(shù)據(jù)時(shí)相當(dāng)于同時(shí)操作2個(gè)LONG字段,所以報(bào)錯(cuò)。
解決辦法:建議減小字段長(zhǎng)度或拆分。實(shí)在需要的,可以轉(zhuǎn)而采用CLOB字段類型。
??????????????????????????????????????????????????????????????????????????? THE END
posted on 2007-08-09 13:50
小立飛刀 閱讀(6983)
評(píng)論(1) 編輯 收藏 所屬分類:
Database