Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Umbenennen einer InnoDB-Tabelle, ohne Fremdschlüsselreferenzen darauf zu aktualisieren?

Alte Fragen, aber das Folgende ist ein möglicher Ausweg. Verschieben Sie im Grunde die Daten, anstatt die Tabellen umzubenennen. Sie müssen natürlich sicherstellen, dass die neuen Daten den Fremdschlüsselregeln entsprechen.

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;

Stellen Sie sicher, dass Sie es als eine Abfrage ausführen, damit die Foreign_key_checks für das Ganze gelten. Hoffe das hilft.