Oracle --- ORA-01461:僅能繫結要插入 LONG 列的 LONG 值
阿新 • • 發佈:2018-12-13
問題描述:
在專案中向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;
參考文章: