Стари въпроси, но следването е възможен начин. По принцип преместете данните, вместо да преименувате таблиците. Разбира се, трябва да се уверите, че новите данни се придържат към правилата за външния ключ.
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;
Уверете се, че го изпълнявате като една заявка, така че external_key_checks да се прилага за цялото нещо. Надявам се това да помогне.