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

Oracle创建DRIVER表报错ORA-01401: inserted value too large for column求助

Oracle ORA-01401错误触发原因及解决方案

触发原因

ORA-01401: inserted value too large for column属于DML操作报错,不会在单纯执行CREATE TABLE语句时触发,大概率是你建表完成后执行插入数据操作时触发,核心逻辑为插入的字段值长度超出了字段定义的最大容量,常见触发场景如下:

  • 字符串字段定义容量不足:你当前定义的First_Name/Last_Name为VARCHAR2(7),Oracle默认VARCHAR2的长度单位为BYTE,存储中文时单个中文占23字节,7BYTE最多仅能存储23个中文,姓名长度超出就会触发报错;同理驾照号Driver_Licence VARCHAR2(8)、社保号SSN VARCHAR2(7)如果实际值超出定义长度也会触发该错误。
  • 长度单位匹配错误:如果你需要的是按字符计数(比如7个字符,不管中英文),使用BYTE作为单位会导致非英文字符的存储上限远低于预期。
  • 特殊场景:如果确实在执行CREATE TABLE时直接报错,检查语句前是否附带了未显式声明的插入逻辑,或者当前会话有DDL触发器会向系统表写入超出长度的日志,该场景出现概率极低。

解决方案

  • 调整字段长度与单位:将字符串字段的长度单位改为CHAR(按字符计数,中英文统一按单个字符算占用量),同时结合业务需求放大字段长度,推荐修改后的建表语句如下:
CREATE TABLE DRIVER 
(
    Driver_Licence VARCHAR2(20 CHAR) NOT NULL, -- 可按实际驾照号最大长度调整
    SSN            VARCHAR2(18 CHAR), -- 国内二代身份证/社保号为18位,可按需调整
    First_Name     VARCHAR2(20 CHAR) NOT NULL,
    Last_Name      VARCHAR2(20 CHAR),
    Birth_Date     DATE DEFAULT DATE '1900-01-01', -- 改用标准DATE字面量,避免依赖会话日期格式参数导致隐式转换报错
    Hire_Date      DATE,
    State_Name     CHAR(2 CHAR),

    CONSTRAINT Driver_PK PRIMARY KEY (Driver_Licence),
    CONSTRAINT Driver_UC UNIQUE (SSN),
    CONSTRAINT Driver_CHK CHECK (Hire_Date > Birth_Date)
);
  • 数据写入前校验:执行INSERT操作前先校验待写入的字段值长度,确认不超出字段定义的最大容量。
  • 对齐业务规则:如果业务要求必须限制字段长度,可先确认对应字段的编码规则,比如驾照号固定长度、社保号固定长度,再对应调整字段定义即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:39:01