He aquí una selección que crea completa soltar y crear instrucciones para todas las relaciones en una mesa. No es de ninguna manera automática pero es bastante fácil de copiar/pegar desde ..
SELECT `DROP`,`CREATE` FROM (
SELECT
CONCAT("ALTER TABLE `", `K`.`TABLE_NAME`, "` DROP FOREIGN KEY `", `K`.`CONSTRAINT_NAME`, "`;") "DROP",
CONCAT("ALTER TABLE `",
`K`.`TABLE_NAME`,
"` ADD CONSTRAINT ",
"`fk_",
`K`.`TABLE_NAME`,
"_",
`K`.`REFERENCED_TABLE_NAME`,
"1",
"` FOREIGN KEY (`",
`K`.`COLUMN_NAME`,
"`) REFERENCES ",
"`",
`K`.`REFERENCED_TABLE_SCHEMA`,
"`.`",
`K`.`REFERENCED_TABLE_NAME`,
"` (`",
`K`.`REFERENCED_COLUMN_NAME`,
"`) ON DELETE ",
`C`.`DELETE_RULE`,
" ON UPDATE ",
`C`.`UPDATE_RULE`,
";") "CREATE"
FROM `information_schema`.`KEY_COLUMN_USAGE` `K`
LEFT JOIN `information_schema`.`REFERENTIAL_CONSTRAINTS` `C` USING (`CONSTRAINT_NAME`)
WHERE `K`.`REFERENCED_TABLE_SCHEMA` = "your_db"
AND `K`.`REFERENCED_TABLE_NAME` = "your_table") AS DropCreateConstraints
que lo utilizó para soltar todas las relaciones, alterar los tipos de datos en las teclas y luego restaurar las relaciones con los nombres de clave externa a La MySQL Workbench. Podría ser útil para alguien ..
por conseguirme error como 'No se puede eliminar o actualizar una fila padre: una restricción de clave externa falla' Intenté crear cada fila, solo una fila obteniendo el error, otras eliminadas. – Pramod
"Seguramente" apenas. En el mundo real, las tablas a menudo son demasiado grandes para que esto sea factible. ¿No hay una forma de manipular índices sin volver a crear toda la tabla? (Sí: ¡vea la excelente solución de Dandalf!) –