Staré otázky, ale následující je možným způsobem kolem. V zásadě přesouvejte data spíše než přejmenovávejte tabulky. Musíte se samozřejmě ujistit, že nová data splňují pravidla pro cizí klíč.
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;
Ujistěte se, že jej spouštíte jako jeden dotaz, aby se kontroly cizích klíčů vztahovaly na celou věc. Doufám, že to pomůže.