ORA-12899: value too large for column(列的值太大)
Oracle含义
向字符/数据列写入了长度超过定义的最大长度的值。例如,15 个字符的文本放不进 VARCHAR2(10) 列。
原因
列宽不足以容纳数据;在多字节字符集(UTF8)中字符数超过了字节限制(BYTE 语义);数据迁移期间使用了不同的字符集;拼接结果变长。
解决方法
加宽列:ALTER TABLE my_table MODIFY (my_column VARCHAR2(100)); 对于多字节内容,使用 CHAR 语义:my_column VARCHAR2(100 CHAR)。如果必须缩短长值,用 SUBSTR 截断。错误消息会给出实际长度和允许的长度;用 LENGTH/LENGTHB 找出溢出的记录。
同一数据库的其他条目
- ORA-06550line/column PLS-... PL/SQL compilation error(行/列 PLS-... PL/SQL 编译错误)
- ORA-04068existing state of packages has been discarded(已丢弃程序包的当前状态)
- ORA-01427single-row subquery returns more than one row(单行子查询返回多个行)
- ORA-30926unable to get a stable set of rows in the source tables(无法在源表中获得一组稳定的行)
- ORA-08103object no longer exists(对象不再存在)
- ORA-01843not a valid month(无效的月份)
- ORA-14400inserted partition key does not map to any partition(插入的分区关键字未映射到任何分区)