2009-09-20 8 views
8

tengo un problema con el abandono de índice de clave externa, siempre me sale el mismo errorMySQL error de índice al caer (Error 150)

ALTER TABLE `comments` DROP INDEX `id_user` 

que da salida a

1025 - Error on rename of './postuj_cz1/#sql-d834_a0c704' 
to './postuj_cz1/comments' (errno: 150) 

El id_user en el otro table es un índice de clave primaria simple.

estoy usando la versión de MySQL 5.0.85

+1

Pruebe primero a colocar todas las claves foráneas en la tabla. –

+0

En realidad, no tengo ningún fk en la mesa –

Respuesta

2

Según this link, el error se refiere a la definición del campo de clave principal. El error no se trata del índice de clave externa.

Compruebe la clave primaria para la tabla COMMENTS para asegurarse de que no tiene la palabra clave UNSIGNED, mientras que la clave externa COMMENTS.id_user tenía la palabra clave UNSIGNED. Esta palabra clave estaba causando el problema: tipo de campo incoherente.

Para corregir, agregue la palabra clave UNSIGNED a la definición de la clave principal para la tabla COMMENTS. O elimine la palabra clave UNSIGNED de la definición de clave externa ...

11

También hay otras causas. Por ejemplo, tenía un índice único que implicaba dos columnas de clave externa separadas. Tuve que soltar las claves externas en cuestión antes de que pudiera soltar el índice único. (Y obviamente, puede volver a agregar las claves foráneas después).

+1

Gracias, ese fue el problema en mi caso. – nightcoder

5

INNODB: esto podría ser tan simple como eliminar la relación antes de soltar el índice.

+1

La relación era, en mi caso, bloquear todo. Entonces, eliminando relaciones, luego eliminando el índice, luego creando un nuevo índice, luego, restaura relaciones – Vaseltior

1

El índice es una clave externa en la tabla 'usuarios', por lo En primer lugar, tratar este comando:

SHOW CREATE TABLE my_table 

encontrar el nombre de la restricción correspondiente al índice de la clave externa,

y después de eso, intentar el comando:

ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode 

ADVERTENCIA: Si intenta quitar la clave externa con el nombre de clave externa, tendrá un error!

Cuestiones relacionadas