我正在尝试使用如下语句从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的值。
任何人都可以告诉我为什么我会收到此错误以及如何删除该列?
答案 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