内容阅读
在知识库中专注阅读,并随时返回相关工具与课程
ORA-12899常见约束
值对列来说过大
Value too large for column
错误描述
要插入或更新的数据超过了列定义的最大长度。
可能原因
- 字符串值超过 VARCHAR2 列长度
- 多字节字符占用的字节数超出预期(AL32UTF8 字符集)
- 从具有更大列大小的源进行数据迁移
解决方案
- 1增加列大小:ALTER TABLE t MODIFY (col VARCHAR2(500));
- 2插入前截断数据:SUBSTR(value, 1, max_length)
- 3检查字节与字符语义:使用 VARCHAR2(100 CHAR) 代替 VARCHAR2(100)
诊断命令
SELECT column_name, data_type, data_length, char_length, char_used FROM dba_tab_columns WHERE table_name = 'TABLE_NAME';SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET';#column-size#varchar2#truncation#charset