問題描述:
在項目中向Oracle插入數據時報錯::ORA-01461: 僅能綁定要插入 LONG 列的 LONG 值。
這是因爲我的Oracle數據庫字符集爲32位編碼的字符集,所能存儲的漢字大大縮減。
解決辦法:
執行“select userenv('language') from dual;”查看字符集,顯示爲AL32UTF8,將其修改爲ZHS16GBK後問題解決。
Oracle 11g修改字符集爲ZHS16GBK方法:
1. cmd下,cd到oracle數據庫軟件的服務器端 如:D:\oraclexe\app\oracle\product\11.2.0\server\bin
2. 輸入set ORACLE_SID=你想進入的數據庫的那個sid,我的爲XE
3. 輸入 sqlplus /nolog
將數據庫啓動到RESTRICTED模式下做字符集更改:
sysdba角色登錄Oracle:
conn /as sysdba
關閉數據庫:
shutdown immediate;
以mount打來數據庫:
startup mount
設置session :
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
開啓數據庫:
alter database open;
修改數據庫字符集爲ZHS16GBK:
ALTER DATABASE CHARACTER SET ZHS16GBK;
這時候會報錯:ORA-12712: new character set must be a superset of old character set ,提示我們新字符集必須爲舊字符集的超集,這時我們可以跳過超集的檢查做更改:
跳過超集檢查修改字符集:
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
查看字符集是否被修改:
select * from v$nls_parameters;
重啓檢查是否更改完成:
shutdown immediate;
startup
select * from v$nls_parameters;
參考文章: