错误提示:

oracle中varchar2(2)存不了一个汉字的原因

一个汉字占了三个字节,而不是两个,这跟字符集有关。

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

oracle中varchar2(2)存不了一个汉字的原因

  结果显示,本机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

 

相关文章:

  • 2021-12-14
  • 2022-12-23
  • 2021-08-05
  • 2022-12-23
  • 2021-08-30
  • 2022-12-23
  • 2021-07-14
  • 2022-03-04
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2022-01-03
  • 2021-07-11
相关资源
相似解决方案