尝试删除NUMBER列时,ORA-12899值太大错误

时间:2016-01-29 18:05:02

标签: oracle

我正在尝试使用如下语句从Oracle中的表中删除列:

ALTER TABLE "MY_TABLE" DROP COLUMN "ENABLED";

但是我收到了这个错误:

ORA-12899: value too large for column "MY_TABLE"."ENABLED" (actual: 184, maximum: 22)

该列定义为

"ENABLED" NUMBER(1,0) DEFAULT NULL NOT NULL ENABLE,

并且它在所有行中只有0或1的值。

任何人都可以告诉我为什么我会收到此错误以及如何删除该列?

2 个答案:

答案 0 :(得分:1)

您可以先尝试将其设置为未使用,然后删除未使用的列。有关更多信息,请参阅Marking Columns Unused

答案 1 :(得分:0)

您可能有一些编码不正确的行,您可能想尝试FLIP / FLOP:

创建一个与NEW_MY_TABLE具有相同结构的表MY_TABLE,但没有"ENABLED"列。

- 制作Insert Into NEW_MY_TABLE (col1,col2...) Select (Col1,Col2...) from MY_TABLE

- Rename MY_TABLE to MY_TABLE_OLD

- Rename NEW_MY_TABLE to MY_TABLE

- Drop MY_TABLE_OLD