sql错误:ORA-01401:插入的值对于列太大

2022-03-04 00:00:00 oracle oracle10g
将新记录插入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"(Actual:3,Maximum:2)"其中Lalit是SCHEMA,T是TABLE,A是COLUMN。为列A指定的大小为%2,而表创建为%2,但是实际插入的大小为%3。

更新关于ORA-01401ORA-12899之间的念力。

从Oracle 10g和更高版本开始,ORA-01401已修改为ORA-12899,它更明确,并且包含有关导致错误的架构、表和列的详细信息。

其他信息以防万一有人感兴趣:

有一个ORA-01401的对应物,即ORA-01438,适用于数字的情况。这似乎没有变化。

例如

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>

相关文章