#1214-使用的表格类型不支持FULLTEXT索引


73

我收到一个错误消息,说表类型不支持FULLTEXT索引。我该如何实现?

这是我的桌子:

CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
)  ;

*

Answers:


104

在MySQL 5.6之前,只有MyISAM Engine支持全文本搜索。

因此,将表的引擎更改为MyISAM

CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
) ENGINE=MyISAM;

这是SQLFiddle演示

或升级到5.6并使用InnoDB全文搜索。



1
事实证明,即使我Mysql --version正确显示了最新的安装,我仍在运行旧的Mysql服务。我必须首先停止并卸载旧的Mysql服务:superuser.com/a/452264/74576,然后C:\wamp\bin\mysql\mysql5.6.17\bin>mysqld --install,然后单击Windows开始菜单>搜索>服务> Mysql>开始
Ryan

它在5.5中可用吗?
KDawg

@KDawg似乎不是:$ mysql -V mysql Ver 15.1 Distrib 5.5.60-MariaDB,对于Linux(x86_64)使用readline 5.1,我得到了错误(升级Bugzilla;早上5:19,我已经很累了,有这么多的事情,并与一切问题都没有跟上)短位前(和太累了,通知任何东西,它花了几次读第一句在这个答案,也看的MySQL -V前这是我遇到的问题,所以我回滚了所有更改,一切都很好-减去了该版本已过时且CentOS已经过时的事实..也许您知道。哦,很好。答案:否。
Pryftan

@KDawg我应该说InnoDB在5.5中不支持FULLTEXT。
Pryftan

19

发生此问题的原因是错误的表类型。MyISAM是Mysql支持全文索引的唯一表类型。

要更正此错误,请在sql之后运行。

 CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
) ENGINE=MyISAM;

9

只有MyISAM数据允许FULLTEXT,因为看到这里

尝试这个:

CREATE TABLE gamemech_chat (
  id bigint(20) unsigned NOT NULL auto_increment,
  from_userid varchar(50) NOT NULL default '0',
  to_userid varchar(50) NOT NULL default '0',
  text text NOT NULL,
  systemtext text NOT NULL,
  timestamp datetime NOT NULL default '0000-00-00 00:00:00',
  chatroom bigint(20) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY from_userid (from_userid),
  FULLTEXT KEY from_userid_2 (from_userid),
  KEY chatroom (chatroom),
  KEY timestamp (timestamp)
) ENGINE=MyISAM;



-5

*************已解决-#1214-使用的表类型不支持FULLTEXT索引***************

解决这个问题非常简单。人们在这里用非常困难的话来回答,这是非技术人员不容易理解的。

因此,我在这里提到的步骤非常简单,可以解决您的问题。

1.)用记事本打开.sql文件,方法是右键单击文件>编辑,或者简单地打开记事本文件并将其拖放到记事本上,该文件将被打开。(注意:请不要更改文件的扩展名.sql,因为它仍然是您的sql数据库。还要保留您的sql文件的副本,以防止自己遭受任何恶意攻击)

2.)单击记事本菜单上的“编辑”>“替换”(将弹出一个窗口,显示“查找内容并替换为字段”)

3.)在“查找内容”字段中输入ENGINE = InnoDB,在“替换为字段”中输入ENGINE = MyISAM

4.)现在单击全部替换按钮

5.)点击CTRL + SFile> Save

6.)现在上传此文件,我确定您的问题将得到解决。


这是替代方案,而不是解决方案
Machado

所以你不喜欢外键?
ilpelle

1
@ADTC谢谢您的精彩笑声!你也是绝对正确的。我要补充一点,程序员不需要GUI,但是我是一个繁重的命令行用户(并且也不使用Windows)...我还要补充一点,程序员也不需要学习如何上传文件如果他们甚至在本地进行编辑(而不是在暂存环境中在相关服务器上进行编辑)。
Pryftan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.