Mysql:ALTER TABLE和外键

时间:2012-06-18 09:24:25

标签: mysql

我正在尝试

ALTER table tbl_name Engine=MyISAM;

我得到了

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

如何在不删除具有外键的表的情况下执行上述查询?

提前谢谢!

UPD 我是否正确理解只有MyIsam支持全文搜索?

2 个答案:

答案 0 :(得分:10)

SET FOREIGN_KEY_CHECKS = 0;无济于事。

如果有其他InnoDB表包含对要转换为MyISAM的表的外键引用,则必须手动删除外键。另请参阅this post on MySQL site

答案 1 :(得分:4)

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

InnoDB存储引擎支持检查外键约束。对于除InnoDB 之外的存储引擎,MySQL Server会在CREATE TABLE语句中解析FOREIGN KEY语法,但不会使用或存储它。

Foreign Key Differences