Preguntas antiguas, pero seguirlas es una posible forma de evitarlo. Básicamente, mueva los datos en lugar de cambiar el nombre de las tablas. Por supuesto, debe asegurarse de que los nuevos datos cumplan con las reglas de clave externa.
SET foreign_key_checks = 0;
CREATE TABLE IF NOT EXISTS foo_old LIKE foo;
INSERT INTO foo_old SELECT * FROM foo;
TRUNCATE foo;
INSERT INTO foo SELECT * FROM foo_new;
Asegúrese de ejecutarlo como una consulta para que Foreign_key_checks se aplique a todo. Espero que esto ayude.