2012-06-18 115 views
1

我試圖做MySQL的:ALTER TABLE鍵和外鍵

ALTER table tbl_name Engine=MyISAM; 

,我得到

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails 

我怎麼能執行上面的查詢,但不刪除有外鍵的表?

預先感謝您!

UPD我理解正確,只有MyIsam支持全文搜索?

+1

爲什麼你想放棄外鍵給你的保護? –

回答

4

嘗試

SET FOREIGN_KEY_CHECKS = 0; 
ALTER table tbl_name Engine=MyISAM; 
SET FOREIGN_KEY_CHECKS = 1; 

InnoDB存儲引擎支持檢查外鍵約束。對於除InnoDB以外的存儲引擎,MySQL服務器分析CREATE TABLE語句中的FOREIGN KEY語法,但不使用或存儲它。

Foreign Key Differences

+3

您至少可以給出一個提示,即MyISAM不支持外鍵值得讚揚;) – fancyPants

+0

感謝您的提示。我不知道:) –

10

SET FOREIGN_KEY_CHECKS = 0;沒有幫助。

如果還有其他InnoDB表包含要轉換爲MyISAM的表的外鍵引用,則必須手動刪除外鍵。另見this post on MySQL site