oracle中varchar2(2)存不了一個漢字的原因


錯誤提示:

一個漢字占了三個字節,而不是兩個,這跟字符集有關。

查一下字符集:select userenv('language') from dual; 

  結果顯示,本機Oracle的字符集是UTF-8,32位,而不是GBK的16位。UTF-8的每個字符占3個字節(bytes),可以通過修改默認字符集來實現varchar2(2)存儲一個漢字。

若此時數據庫服務器已啟動,則先執行SHUTDOWN IMMEDIATE命令關閉數據庫服務器,然后執行以下命令:

SQL>STARTUP MOUNT;
 
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
 
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
 
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
 
SQL>ALTER DATABASE OPEN;
 
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK; //跳過超子集檢測
 
SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK;

SQL>SHUTDOWN IMMEDIATE;
 
SQL>STARTUP

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM