Home » FAQ » El error 1025 (errno: 150)

El error 1025 (errno: 150)

Aunque está suficientemente explicado en la ayuda de MySql, lo pongo aquí porque el mensaje de error es bastante críptico e induce a error. Al intentar hacer algo como

alter table nombre_tabla drop primary key;

Obtenemos el siguiente error:

Error on rename of '.ejercicio_9#sql-b8_c' to '.ejercicio_9nombre_tabla' (errno: 150)   ErrorNr. 1025

Pues bien, aunque no lo parezca este error nos indica que la tabla nombre_tabla está siendo referenciada por otra tabla. En otras palabras, hemos establecido un clave ajena sobre esa tabla. No tiene que ver ni con permisos, ni con bloqueos ni con cosas así.

Para solucionarlo, debemos primero eliminar esas claves ajenas definidas. Una forma de verlas es con la sentencia sql

SELECT ke.referenced_table_name parent, ke.table_name child, ke.constraint_name
FROM information_schema.KEY_COLUMN_USAGE ke
WHERE ke.referenced_table_name IS NOT NULL
ORDER BY ke.referenced_table_name;

(Tomado de los comentarios de la ayuda de MySql).

Así salen todas, para sacar las que nos causan problemas, añadir al where

and ke.referenced_table_name='nombre_tabla'

En las child, hacemos un

alter table nombre_tabla_child drop foreign key constraint_name;

Y ya podemos trabajar sin el error.

Tus comentarios son importantes

Previous post:

Next post: