2009-07-25 70 views
0

我正在重新開發一個Web應用程序及其基礎結構,最初使用SQL Server 2005,ASP.NET &將Windows 2003添加到LAMMP(當然還有額外的M for memcached)由於架構經過大量重構(我有充分理由這樣做),因此我必須編寫一個自定義遷移應用程序。SQL Server遷移到帶有InnoDB鍵和約束問題的重構MySQL

問題是InnoDB主鍵+外鍵約束阻礙了我將數據插入MySQL/InnoDB表的能力。我已經嘗試過使用DISABLE KEYS & FOREIGN_KEY_CHECKS方法,並臨時刪除主服務器上的自動增量,當它嘗試進行其中一項更改時拋出錯誤,如DISABLE KEYS,因爲它在InnoDB中不受支持,或者嘗試刪除在空表中的列上進行主鍵分配或遷移應用程序拋出錯誤,並且在表格爲空時輸入記錄時已經存在鍵。除此之外還有什麼可以做的,除了先把所有的鑰匙都拿走,然後把它們放回去(我認爲這也會給我太多麻煩)?

謝謝!

+0

除非你有一個循環依賴一定是有順序的遷移記錄不違反任何鍵約束插入。 – Rafe 2009-07-25 17:35:01

回答

0

原來這個工程:

ALTER TABLE `site_oltp`.`members` MODIFY COLUMN `id` INT(11) NOT NULL; 
SET FOREIGN_KEY_CHECKS = 0, UNIQUE_CHECKS = 0; 

插入記錄....

ALTER TABLE `site_oltp`.`members` MODIFY COLUMN `id` INT(11) NOT NULL AUTO_INCREMENT; 

ALTER TABLE `site_oltp`.`members` AUTO_INCREMENT = (LAST_ID_GOES_HERE + 1); 

SET FOREIGN_KEY_CHECKS = 1, UNIQUE_CHECKS = 1"; 
0

我更喜歡我的遷移數據的第三方applpications,我用數據加載時,我是遷移MS SQL到Foxpro它工作得很好,它可以遷移幾乎任何數據庫。

下載免費:http://www.dbload.com