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

我得到一个错误说,表类型不支持 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)
)  ;

*

121936 次浏览

在 MyISAM 引擎支持 MySQL 5.6全文搜索之前。

因此,要么将表的引擎更改为 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;

这是 译自: 美国《科学》杂志网站(http://SQLFiddle.com/# ! 2/e6635)的演示

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

只有 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;

问题出现在错误的表类型上。 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;

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

解决这个问题很简单。人们在这里用非常难以理解的词语回答问题,不懂技术的人很难理解。

所以我在这里用非常简单的语言提到的步骤将解决你的问题。

1)打开你的。使用记事本的 sql 文件通过右键点击文件 > 编辑或简单地打开一个记事本文件,在记事本上拖放文件,文件就会被打开。(注意: 请勿更改扩展名。文件的 sql 仍然是您的 sql 数据库。还要保留一个 sql 文件的副本,以免发生任何意外)

2)点击记事本菜单编辑 > 替换(一个窗口将弹出我们找到什么和替换字段)

3)在查找字段中输入 ENGINE = InnoDB并用字段代替输入 引擎 = MyISAM

4)现在点击 全部替换按钮

(5)按 CTRL + S文件 > 储存

6)现在上传这个文件,我确信你的问题将得到解决... ..。

只需做以下几件事:

  1. 用记事本或记事本 + + 打开.sql 文件

  2. 查找 InnoDB 并使用 MyISAM 替换所有(大约87个)

  3. 保存,现在可以导入数据库而不出现错误。

官方推荐信

全文索引只能用于 MyISAM 表。(在 MySQL 5.6及以上版本中,它们也可以与 InnoDB 表一起使用。)只能为 CHAR、 VARCHAR 或 TEXT 列创建全文索引。

Https://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

带有 MySQL 5.5的 InnoDB 不支持全文索引。