ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-01450: 超过键值长度 处理一例

ORA-01450: 超过键值长度 处理一例

原创 Linux操作系统 作者:steeldong 时间:2008-06-03 11:44:40 0 删除 编辑

这里的发生的例外情况为在为一个栏位创建索引时,出现上述异常,索引如下:

CREATE INDEX PPEMS.IDX_SYS_STD_LANG_RES_TEXT ON PPEMS.SYS_STD_LANGUAGE_RESOURCE
(TEXT)
TABLESPACE LOG_IDX

PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          1M
            NEXT             5M
            MINEXTENTS       1
            MAXEXTENTS       2147483645
            PCTINCREASE      0
            FREELISTS        1
            FREELIST GROUPS  1
            BUFFER_POOL      DEFAULT
           )
NOPARALLEL;

开始以为是索引的名称太长,后来怎么修改都无济如是。

经下列研究发现:

SQL>   create   table   test3(a   varchar2(4000),   b   varchar2(4000));  
   
  表已创建。  
   
  SQL>   create   index   ix_test3_ab   on   test3(a,b);  
  create   index   ix_test3_ab   on   test3(a,b)  
                                                          *  
  ERROR   位于第   1   行:  
  ORA-01450:   超出最大的关键字长度   (6398)  
   
  SQL>   DROP   TABLE   TEST3   CASCADE   CONSTRAINTS  
   
  表已丢弃。  
   
  SQL>   create   table   test3(a   varchar2(400),   b   varchar2(400));  
   
  表已创建。  
   
  SQL>   create   index   ix_test3_ab   on   test3(a,b);  
   
  索引已创建。  
   
  看出来了吧?你的两个字段建立的复合索引,单个索引项最大可能是4000+4000共计8000个字节,有可能超过6398这个限制,因此索引无法创建。  
   
  如果你没有那么多内容要存储的话,就把字段定义小点。   
 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/14245958/viewspace-331012/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-05-17

  • 博文量
    9
  • 访问量
    21480