Algunos mensajes con código no ayuda mucho que digamos (eso suele pasar
ERROR 1005 (HY000): Can't create table 'Table.frm' (errno: 150)
En donde Table es el nombre de la tabla que intentaba crear. Para localizar la causa del error nos vamos a valer de un comando de mysql que creo que no es muy conocido:
mysql> SHOW ENGINE INNODB STATUS;
Nos dará una explicación acerca del último error que obtuvimos con una llave foranea (que es la causante de este error).
Si usas un archivo de mysqldump y quieres evitar el chequeo de llaves foraneas para evitar que aparezca este error debes de escribir una linea al inicio del archivo (TOP) y otra al final (BOTTOM):
SET FOREIGN_KEY_CHECKS = 0; -- TOP SET FOREIGN_KEY_CHECKS = 1; -- BOTTOM
un pedazo de screenshot donde muestra una parte del resultado del comando mencionado.
12 comentarios:
¡¡Muchas gracias!!
Estos errores me estaban volviendo loco :)
Ok, buen aporte... he tenido el mismo error y me he dado cuenta del porque surgio, claro luego de revisar con ese comando quede aun mas claro.
En mi caso, no podia crear una nueva tabla foranea por la sencilla razon que las otras 2 tablas a las que hacia referencia, ya contaban con datos, por ende no podia crear una nueva tabla con claves foraneas vacias... suena logico, asi que elimine los datos de ambas tablas y logre crear sin problemas la tercera con foreign keys...
saludos
Este es mi primer comentario al respecto del error ERROR 1005 (HY000): Can't create table 'Table.frm' (errno: 150), yo no soy experto en bases de datos pero lei el mensaje que aparece en ingles con show innodb status y despues de averiguar por todas partes no habia podido solucionar el inconveniente; creí que con destruir los indices y crearlos nuevamente de la manera correcta podría salir de esto pero eliminé la PK de la tabla y la volví a crear de manera correcta y superé el problema (despues de 2 dias)
me da gusto que haya funcionado para arreglar los problemas, esa es la idea
Muchas gracias por la referencia al comando SHOW ENGINE INNODB STATUS, en la información vi que tenia el nombre de la FK repetido y por eso no podía crear la referencia en otra tabla.
Revisa el COLLATION, estuve rato sin dar con la solución y el problema era el COLLATION diferente, debe ser el mismo tanto en la tabla como en los campos invoclucrados.
Saludos
Gracias Anónimo, era le Collation efectivamente.
gracias, me guio en la resolucion de mi problema ;)
mi error estaba en que tenia el campo de la primary key declarado como char y el de la clave externa como numeric U_U
LE DEBO UNA A QUIEN QUIERA QUE HAYA DICHO LO DE TENER DECLARADA DE DIFERENTE MANERA CUANDO ES PRIMARY QUE CUANDO ES FOREIGN KEY, ME ACABAS DE AYUDAR MUCHISIMO
increible que toda esta información del 2009 siga siendo de ayuda para todos en este 2012 (y lo que falta)... :) es la magia del internet
No conocía este comando, creo que es una de las mejores cosas relativas a administración de MySQL que encontré en los últimos años.
¡¡Mil gracias!!
Publicar un comentario