我想用新表替換InnoDB表,並且我希望指向舊錶的所有外鍵引用都指向新表。重命名InnoDB表而不更新對其的外鍵引用?
所以,我想這一點:
SET foreign_key_checks = 0;
ALTER TABLE foo RENAME foo_old;
ALTER TABLE foo_new RENAME foo;
不幸的是,即使有FOREIGN_KEY_CHECKS禁用,指向FOO的所有引用都更改爲指向foo_old。現在我正在尋找任何
- 的方式來改變外鍵引用不回來重建整個表或
- 的方式,而無需更新外鍵引用到重命名錶。
我嘗試刪除外鍵並重新創建它們,但由於表格很大,所以需要花費數小時。替換表格的重點是在有限的停機時間內改變模式。
有沒有人知道在2015年這個問題上是否有任何更新? – Greg 2015-11-06 14:07:20
更換表是否相同或略有修改?例如,改變可以通過改變來完成嗎?如果是這樣,你可能想看看[pt-online-schema-change -alter-foreign-keys-change](https://www.percona.com/doc/percona-toolkit/2.1/pt-online-架構change.html#cmdoption-PT-在線模式變化 - 改變,外國鍵法)。 – Dave 2015-11-10 13:06:51