Acabo de modificar una base de datos, no debió demorar las dos horas que demoré en realizar la tarea si no fuera por que MySQL no ha mejorado aun sus mensajes de error.
La tarea fue agregar una nueva clave foránea a una tabla existente, veamos como reproducir lo que me ha pasado:
-- Crear las tablas foo y bar create table foo ( id integer not null primary key, bar_id int not null ); create table bar ( id integer not null primary key ); -- Intentar crear una clave foránea alter table foo add foreign key(bar_id) references bar(ANY_FIELD) ;
Al ejecutar la ultima sentencia MySQL devuelve un error genérico que puede significar muchas cosas:
Error Code: 1005. Can't create table 'temp.#sql-4bd7_11'
(errno: 150)
Todo hubiera sido mas fácil si me hubiera dado cuenta que escribí
mal el campo de la tabla de deferencia
bar(ANY_FIELD)
(algunas veces pasa), si …