在Oracle数据库的表中插入新记录时遇到问题。错误描述显示-
SQL错误:ORA-01401:插入的值对于列太大
当我在表中有60列时,我怎么知道哪一列的值大呢。
SQL错误:ORA-01401:插入的值对于列太大
您正试图插入大于指定列大小的值。
当我在表中有60列时,我怎么知道哪一列的值大呢。
错误肯定会有插入的实际大小和允许的最大大小的表和列名。
例如,
SQL> CREATE TABLE t(A VARCHAR2(2));
Table created.
SQL>
SQL> INSERT INTO t VALUES ('123');
INSERT INTO t VALUES ('123')
*
ERROR at line 1:
ORA-12899: value too large for column "LALIT"."T"."A" (actual: 3, maximum: 2)
SQL>
在上面的示例中,错误清楚地表明"column"LALIT"."T"."A"(实际值:3,最大值:2)",其中LA LIT是SCHEMA
,T为COLUMN
。创建表时为列A指定的大小为2,但实际插入的大小为3。
更新关于ORA-01401
和ORA-12899
之间的混淆。
从Oracle 10g及更高版本,ORA-01401
被修改为ORA-12899
,后者更明确,并包含导致错误的SCHEMA、TABLE和COLUMN的详细信息。
其他信息万一有人感兴趣:
有一个对应的ORA-01401
,即ORA-01438
,适用于NUMBER的情况。这似乎没有改变。
例如,
SQL> CREATE TABLE t(A number(2));
Table created.
SQL>
SQL> INSERT INTO t VALUES (123);
INSERT INTO t VALUES (123)
*
ERROR at line 1:
ORA-01438: value larger than specified precision allowed for this column
SQL>