2011-11-18 79 views
0

我目前有一個基於MYISAM存儲引擎的數據庫,它有幾千條記錄。我想將我的數據庫轉換爲InnoDb存儲引擎。將數據複製到myisam的innodb

它不會是一個簡單的ALTER存儲引擎命令,因爲我需要將外鍵添加到當前數據庫模式(當前的MyISAM數據庫模式確實有主鍵),然後再將其轉換爲InnoDb。

我的問題是,一旦我將數據庫轉換爲InnoDb,將數據從當前的MYISAM引擎恢復爲InnoDb引擎就像發射一個PhpMyAdmin實例並備份數據(減去數據庫模式或結構)一樣簡單,並且然後將其恢復到Innodb引擎?

這樣做有什麼潛在的障礙?

這是正確的方式來解決這個問題或其他各種更簡單或更好的方法來恢復數據?

回答

0

當您首先添加外鍵時,您必須以特定順序複製您的數據,否則您的數據將不會因爲外鍵約束而被添加。 因此,最好的辦法是檢查(通過SQL查詢)是否可以用當前數據集實現外鍵約束,然後複製數據,然後定義外鍵。 但是,如果您使用PHPMyAdmin從InnoDB數據庫中導出數據,那麼訂單已經完成,您可以無任何問題地重新導入它。

2

這不會是一個簡單的ALTER存儲引擎的命令,因爲我需要的外鍵添加到當前數據庫架構

爲什麼不呢?當然先備份數據,這是一個好主意,但你並不需要轉儲和恢復數據,您也可以簽發簡單的ALTER TABLE,如:

ALTER TABLE `tablename` ENGINE = InnoDB; 

之後,你可以添加任何索引和外鍵。如果任何新外鍵失敗,您必須修復您的數據並重試。

0

你也許可以添加外鍵後

  1. 改變表使用新的引擎

  2. 阿爾特每個表使用外鍵

我只看到一個與此問題,這將是如果外鍵被打破開始。