将表更改为Fulltext时出现MySQL错误

时间:2012-11-09 03:24:04

标签: mysql database full-text-search

当我尝试在我的数据库中包含要通过FULLTEXT更改的列时,出现错误#1283 - Column 'title' cannot be part of FULLTEXT index

ALTER TABLE users ADD FULLTEXT (`firstname`, `lastname`, `title`, `description`)

我不明白为什么会出现此错误或如何解决此问题。将不胜感激任何想法或提示。

4 个答案:

答案 0 :(得分:4)

FULLTEXT索引仅适用于MyISAM表,而不适用于InnoDB。您可以通过键入以下内容来检查您使用的存储空间:

SHOW CREATE TABLE users;

然后,您可以ALTER使用此命令MyISAM使用ALTER TABLE users ENGINE = MyISAM; 引擎:

{{1}}

答案 1 :(得分:3)

从Mysql 5.6开始,INNODB现在支持FULLTEXT INDEX。现在,当我将FULLTEXT添加到我的表中并遇到多个问题时,我也遇到了这个问题。

  1. 您需要确保将ibdata1文件设置为autoextend。 http://dev.mysql.com/doc/refman/5.0/en/innodb-data-log-reconfiguration.html

  2. 我的磁盘空间已用完。当mysql改变一个表时,mysql使用tmp数据和内存来执行此操作。您需要确保cnf文件中的tmp目录指向具有足够空间的目录。此外,由于它使用内存,它将使用您的虚拟内存。这意味着您的OS驱动器需要有足够的空间。如果这不是一个选项,请创建一个tmp复制tmp表并使用全文更改该表,然后右键INSERT INTO table SELECT * FROM og_table

答案 2 :(得分:0)

如果您的表格是 InnoDB ,那么您就无法使用它。并且需要放弃它。

您还可以参考InnoDB @ http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html

的限制

答案 3 :(得分:0)

自Mysql 5.6起,INNODB支持FULLTEXT INDEX

为避免错误“列*不能成为FULLTEXT索引的一部分” 检查列的TEXT INCODING;)它必须相同。