ORA-12899: 列 "RC"."MM_PACKAGE"."PACKAGE_DESC" 的值太大 (实际值: 1262, 最大值: 1024)

原创 2015年11月18日 15:24:46


前台页面提示还可以输入字符,后台数据库报错:

Caused by: java.sql.SQLException: ORA-12899: 列 "RC"."MM_PACKAGE"."PACKAGE_DESC" 的值太大 (实际值: 1262, 最大值: 1024)

查了一下,是数据库字符集的问题。

查看数据库字符集方法:select userenv('language') from dual; 

显示字符集是SIMPLIFIED CHINESE_CHINA.AL32UTF8

UTF8字符集,一个汉字占用3个字节。这样一来原先按一个汉字占两个字节设计的数据库,应用的时候很多字段都会因长度不够,出现ORA-12899错误。
可以把数据库的字符集改成ZHS16GBK,每个汉字占用的字节数是2。

修改字符集方法:

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; 
--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验. 
SQL> shutdown immediate; 
SQL> startup

参考http://blog.csdn.net/lanruoshui/article/details/9763483

http://www.itpub.net/forum.php?mod=viewthread&tid=276524



版权声明:本文为博主原创文章,未经博主允许不得转载。

ORA-12899: 列 XX 的值太大 (实际值: 521, 最大值:512)

hibernate保存数据到oracle数据库时,报如下错误: 20:25:56,593 WARN JDBCExceptionReporter:100 - SQL Error: 12899, SQ...
  • zxnlmj
  • zxnlmj
  • 2014年03月30日 11:58
  • 3680

kmalloc分配大小的限制

kmalloc是通过cache来实现的, 只不过每次kmalloc的大小不同, 因此是从不同的cache中分配: /* include/linux/slab.h */ // 注意kmalloc是在...
  • sadamoo
  • sadamoo
  • 2013年01月25日 16:10
  • 1585

ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小

昨天遇到一个问题,ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小,去找问题时候,发现是sql查询语句的to_char方法将clob类型转换成varc...
  • qq_15139447
  • qq_15139447
  • 2016年04月14日 10:17
  • 10596

如何验证linux进程打开文件数的默认最大值(通常是1024)? 知识点: ulimit; watch -n 1 'ls -l /proc/xxx/fd | wc -l'

曾经在某公司的笔试题中出现了这样一个题目:linux进程打开文件数的默认最大值是多少? 我当时想, 这不是为难人么? 谁记得住呢? 用ulimit命令查一下不就知道了么? 其实, 本题不过是在考一个简...
  • stpeace
  • stpeace
  • 2016年07月02日 12:13
  • 1902

HDU 1024 给定一个数组,求其分成m个不相交子段和最大值

Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other...
  • FK_ACM
  • FK_ACM
  • 2015年11月19日 20:55
  • 192

hdu 1024 Max Sum Plus Plus(动态规划+m子段和的最大值)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Limit: 2000/1000 MS (J...
  • qiqi_skystar
  • qiqi_skystar
  • 2016年01月28日 12:40
  • 2435

A - Max Sum Plus Plus HDU1024 ( 动态规划 多段连续子段和的最大值)

A - Max Sum Plus Plus Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St...
  • u013167299
  • u013167299
  • 2015年03月28日 18:16
  • 544

HDU 1024 Max Sum Plus Plus(动态规划,给定一个数组,求其分成m个不订交子段和最大值的题目)

Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O...
  • CROSSCI
  • CROSSCI
  • 2012年05月09日 15:29
  • 583

HDU 1024 m段子段和最大值 (DP)

本题的大致意思为给定一个数组,求其分成m个不相交子段和最大值的问题。 方程 dp[i][j]=Max(dp[i][j-1]+a[j] , max( dp[i-1][k] ) + a[j] )...
  • h1021456873
  • h1021456873
  • 2015年12月03日 20:17
  • 332

linux下的select简直太奇葩了:1024限定的不只是监听的个数,还是文件描述符的最大值,注意,是值

转自:http://m.blog.csdn.net/blog/wuzili1234/12450451 我原来自以为对select就算不熟,基本原理和使用方法也略知一二了,做了一年多的服务...
  • gettogetto
  • gettogetto
  • 2017年07月09日 14:02
  • 238
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORA-12899: 列 "RC"."MM_PACKAGE"."PACKAGE_DESC" 的值太大 (实际值: 1262, 最大值: 1024)
举报原因:
原因补充:

(最多只允许输入30个字)