2012-06-18 71 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