在導入數(shù)據(jù)的時候已經(jīng)多次出現(xiàn)過這個錯誤了:
ORA-01461 can bind a LONG value only for insert into a LONG column
可是我的表里沒有LONG型字段,傳入的數(shù)據(jù)也沒有超過超過字段的長度。
經(jīng)過查找,當向ORACLE中插入或更新數(shù)據(jù)時,報出以上錯誤。可能有以下幾種原因:

    [1]插入到字符串長度大于4000字節(jié)。
    [2]插入到表中的記錄的某個字段數(shù)據(jù)的實際長度大于2000個字節(jié)(如果是UTF-8,則是1333個字節(jié));或者是插入的記錄中有兩個或兩個以上長度大于2000字節(jié)的字符串。
    [3]數(shù)據(jù)庫與客戶端的JDBC驅(qū)動不匹配。
而我遇到的就是字符集不匹配的問題。就是說,數(shù)據(jù)庫的字符集(NLS_CHARACTERSET),與應用客戶端的字符集必須匹配。

在導入數(shù)據(jù)之前要保證客戶端字符集和數(shù)據(jù)庫字符集匹配。

修改客戶端字符集比較簡單:客戶端的字符集的設置,可能是參數(shù)文件,環(huán)境變量或者是注冊表,在msdos環(huán)境下,用命令set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK即可修改為字符集“AMERICAN_AMERICA.ZHS16GBK”。

修改數(shù)據(jù)庫字符集則比較麻煩:8i以上版本可以通過alter database來修改字符集,但也只限于子集到超集,不建議修改props$表,將可能導致嚴重錯誤。

Startup nomount;
Alter database mount exclusive;
Alter system enable restricted session;
Alter system set job_queue_process=0;
Alter database open;
Alter database character set zhs16gbk;