问题: ORA-12899: value too large for column UUM"."EMP_NAME" (actual: 30, maximum: 20)
先装了一个服务器现在插入数据的时候出现错误,测试后发现是数据库字符集问题
插入数据 “只能查看滨江区” 会字节溢出 “只能查看滨江”正常 VARCHAR2(20)
解决:
[tomcat@localhost ~]$ su - oracle
[oracle@localhost ~]$ sqlplus / as sysdba;
SQL> conn /as sysdba
SQL> 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 ZHS16GBK;
或者报错后用ORA-12712: new character set must be a superset of old character set SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; --网上说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验
SQL> select * from v$nls_parameters;
SQL> shutdown immediate;
SQL> startup ;
SQL> select * from v$nls_parameters;
SQL> select userenv('language') from dual;
注意:一点要在安装库之前选字符集是ZHS16GBK,风险是如何建库后再改字符集会导致数据乱码问题