无法将表类型更改为MyISAM

3

我正在尝试将一个表的类型更改为MyISAM,但是它不允许我:

ALTER TABLE `mytable` ENGINE = MYISAM

MySQL提示:

文档 1217 - 无法删除或更新父行:外键约束失败

该错误提示意为,试图在具有外键约束的表中删除或更新父行数据时,由于子表中存在对应父行的关联数据,因此操作失败。
2个回答

1

MYISAM不支持外键

对于除InnoDB之外的存储引擎,MySQL服务器会解析CREATE TABLE语句中的FOREIGN KEY语法,但不使用或存储它。

因此,您必须删除所有外键才能使用MYISAM。例如:

ALTER TABLE mytable DROP FOREIGN KEY key_name 

1
哦,什么?有一种表类型支持两者吗?我有一个带有外键的表,但我需要在其中一个列上强制执行FULLTEXT。 - user1701467

0

将您的MySQL升级到5.6.4或更高版本。

使用5.6.4 MySQL,InnoDB具有全文支持。

http://dev.mysql.com/doc/refman/5.6/en/news-5-6-4.html

InnoDB注释

MySQL现在支持InnoDB表的全文本索引。核心语法与早期版本的FULLTEXT功能非常相似,包括CREATE TABLE和CREATE INDEX语句以及SELECT语句中的MATCH() ... AGAINST()子句。新的@运算符允许搜索在文档中彼此接近的术语。详细的搜索处理由一组新的配置选项控制:innodb_ft_enable_stopword、innodb_ft_server_stopword_table、innodb_ft_user_stopword_table、innodb_ft_cache_size、innodb_ft_min_token_size和innodb_ft_max_token_size。您可以通过查询新的INFORMATION_SCHEMA表来监视InnoDB全文本搜索系统的工作情况:innodb_ft_default_stopword、innodb_ft_index_table、innodb_ft_index_cache、innodb_ft_config、innodb_ft_deleted和innodb_ft_being_deleted。


嗯,那么它同时也支持同一张表的外键吗? - user1701467

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接