Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql全文搜索错误_Mysql_Full Text Search_Mysql Error 1214 - Fatal编程技术网

mysql全文搜索错误

mysql全文搜索错误,mysql,full-text-search,mysql-error-1214,Mysql,Full Text Search,Mysql Error 1214,我尝试将全文搜索添加到现有表中。当我尝试时: alter table tweets add fulltext index(tags); 我得到了一个错误: ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes 有什么问题?如何知道它是什么表类型?如果要使用全文索引,需要确保表的底层引擎是MyISAM。您可以使用altertable tweets ENGINE=MYISAM这是检查表格类型的方式: SE

我尝试将全文搜索添加到现有表中。当我尝试时:

alter table tweets add fulltext index(tags);
我得到了一个错误:

ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

有什么问题?如何知道它是什么表类型?

如果要使用全文索引,需要确保表的底层引擎是MyISAM。您可以使用
altertable tweets ENGINE=MYISAM

这是检查表格类型的方式:

SELECT table_schema,engine FROM information_schema.tables WHERE table_name='tweet';
只有
MyISAM
支持
全文索引

您可能还想抢占停止字列表

您可以按如下方式覆盖此选项:

1) 像这样在
/var/lib/mysql
中创建一个文本文件

echo "a" > /var/lib/mysql/stopwords.txt<BR>
echo "an" >> /var/lib/mysql/stopwords.txt<BR>
echo "the" >> /var/lib/mysql/stopwords.txt<BR>
3) 服务mysql重启

这里还有一些需要考虑的问题:

您可能不想将表“tweets”转换为
MyISAM

1) 如果
InnoDB
表“tweets”包含
约束

2) 如果
InnoDB
表'tweets'是其他
InnoDB
表的父级,且带有外键约束,则返回到'tweets'

3) 您负担不起“tweets”表的表级锁定

请记住,如果是
MyISAM
表,则每个
INSERT
插入到“tweets”表中都会触发表级锁。由于它目前是一个
InnoDB
表(它执行行级锁定),因此可以非常快速地
将“tweets”表插入

许多人都希望创建一个单独的
MyISAM
表,名为
tweets\u tags
,该表的主键与“tweets”表中的主键相同,同时还有一个名为“tags”的
TEXT
列,与“tweets”表中的主键相同

接下来,开始加载tweets_标签,如下所示:

INSERT INTO tweets_tags (id,tags) SELECT id,tags FROM tweets;
然后,定期(每晚或每6小时)将新tweets加载到tweets_标签中,如下所示:

INSERT INTO tweets_tags (id,tags) SELECT id,tags FROM tweets WHERE id > (SELECT max(id) FROM tweets_tags);

顺便问一下,我怎么知道它当前的桌子类型呢?哇~~~这太神奇了……比我原来想象的要多。。。。谢谢你,伙计。你太棒了~~
INSERT INTO tweets_tags (id,tags) SELECT id,tags FROM tweets WHERE id > (SELECT max(id) FROM tweets_tags);