Estoy tratando de eliminar una columna de una tabla en Oracle usando una declaración como esta:

ALTER TABLE "MY_TABLE" DROP COLUMN "ENABLED";

Pero recibo este error:

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

La columna se define como

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

Y solo tiene valores de 0 o 1 en todas las filas.

¿Alguien puede decirme por qué recibo este error y cómo eliminar la columna?

2
tctimmeh 29 ene. 2016 a las 21:05

2 respuestas

La mejor respuesta

Puede intentar configurarlo como no utilizado primero y luego descartar las columnas no utilizadas. Para obtener más información, consulte Marcado de columnas sin usar.

1
tbone 29 ene. 2016 a las 20:34

Es posible que tenga algunas filas con codificación incorrecta, es posible que desee probar un FLIP / FLOP:

-Crear una tabla NEW_MY_TABLE con la misma estructura que MY_TABLE, pero sin la columna "ENABLED".

-Haz una 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

0
Haytem BrB 29 ene. 2016 a las 18:18