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);