2010-05-31 35 views
0

我想將帶有innodb表的數據庫轉換爲myisam,全部都是。我怎樣才能做到這些?表之間存在一些外鍵。我可以將Innodb與外國直接轉換成mysiam嗎?

我該如何以最好的方式做到這一點?

+0

爲什麼你想這樣做?你不需要參照完整性嗎? – 2010-05-31 02:35:07

回答

1

當外鍵仍然存在時,不能直接從InnoDB轉換到MyISAM。您必須先刪除約束條件。要做到這一點,每個表請按照下列步驟操作:

  1. 問題SHOW CREATE TABLE tablename
  2. 每個約束......輸出外鍵聲明,你就需要發出ALTER TABLE tablename DROP FOREIGN KEY x其中xCONSTRAINT之間出現的標識符和FOREIGN KEY
  3. 再次發行SHOW CREATE TABLE tablename。外鍵約束可能會留下索引(因爲InnoDB需要每個外鍵的索引,並且不一定會因爲您已經刪除約束而將其刪除)。對於您決定不再需要的每個索引,請發出ALTER TABLE tablename DROP INDEX indexname

對所有涉及約束的表完成此操作後,可以使用ALTER TABLE tablename ENGINE=MYISAM將錶轉換爲MyISAM。

+0

我剛纔想到的另一件事情是:對於給定的ALTER TABLE命令,您可以執行多個操作,因此以下內容將是有效的:ALTER TABLE tablename DROP FOREIGN KEY x1,DROP FOREIGN KEY x2,...,DROP FOREIGN KEY xn – Hammerite 2010-05-31 03:37:29

+0

非常感謝,真的幫了我很多! – Joe 2010-05-31 07:51:09

相關問題