You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle复合列VARCHAR最大长度及ORA-01450错误咨询

Oracle 复合VARCHAR列主键的长度限制问题

问题场景

执行以下建表语句时触发ORA-01450错误:

CREATE TABLE test1( 
    col1 varchar(4000) NOT NULL, 
    col2 varchar(4000) NOT NULL, 
    col3 varchar(4000), 
    col4 varchar(4000), 
    col5 varchar(4000) NOT NULL, 
    col6 varchar(4000), 
    col7 varchar(4000), 
    PRIMARY KEY(col1, col2, col3)
)

错误信息:

ORA-01450: maximum key length (6398) exceeded
01450. 00000 - "maximum key length (%s) exceeded"

核心答案

Oracle中,复合主键(以及普通复合索引)的总字节长度上限为6398字节,该数值已在错误提示中明确给出。

原因分析

你定义的主键包含三个VARCHAR(4000)列:

  • 若使用单字节字符集(如ASCII、单字节UTF-8),每个列最大占用4000字节,三个列总长度为12000字节,远超6398字节的限制,因此触发报错。
  • 若使用多字节字符集(如多字节UTF-8),每个字符可能占用2-4字节,实际总字节数会更大,同样会超出限制。

解决建议

  • 缩短主键列的定义长度,确保三个列的总字节数不超过6398字节;
  • 更换主键组合,减少主键包含的列数;
  • 改用占用字节更少的类型作为主键(比如数字类型、固定长度的哈希值列)。

内容的提问来源于stack exchange,提问作者anurag1007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 19:27:42