MariaDB 文档说 InnoDB 的 FULLTEXT 索引自版本 10.0.5 ( https://mariadb.com/kb/en/mariadb/documentation/optimization-and-tuning/optimization-and-indexes/full-text-indexes/fulltext-index-overview/ ) 起受支持

我最近安装了 MariaDB 10.0.13 并尝试将 MyISAM 表转换为 InnoDB,如下所示:

MariaDB [(test)]> ALTER TABLE field_values ENGINE=InnoDB;

但是遇到了这个错误:
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

这是我的表的 SHOW INDEXES 查询:
MariaDB [(test)]> show indexes in  field_values;
+--------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table                    | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+--------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| field_values |          0 | PRIMARY  |            1 | productid   | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| field_values |          0 | PRIMARY  |            2 | fieldid     | A         |           0 |     NULL | NULL   |      | BTREE      |         |               |
| field_values |          1 | value    |            1 | value       | NULL      |        NULL |     NULL | NULL   |      | FULLTEXT   |         |               |
+--------------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
3 rows in set (0.00 sec)

MariaDB 文档说明这些索引只能为 CHAR、VARCHAR 或 TEXT 列创建。所以这是我的表的 DESCRIBE TABLE:
MariaDB [(test)]> describe  field_values ;
+-----------+-----------+------+-----+---------+-------+
| Field     | Type      | Null | Key | Default | Extra |
+-----------+-----------+------+-----+---------+-------+
| productid | int(11)   | NO   | PRI | 0       |       |
| fieldid   | int(11)   | NO   | PRI | 0       |       |
| value     | char(255) | NO   | MUL |         |       |
+-----------+-----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

支持相关字段 ( value ),其类型为 CHAR

最后,这是我的 MariaDB 版本:
mysql  Ver 15.1 Distrib 10.0.13-MariaDB, for Linux (x86_64) using readline 5.1

因此,至少根据 MariaDB 文档,应该支持此操作,但我看到了错误。在 MariaDB 10.0.13 中启用 FULLTEXT 索引是否需要做任何其他事情?

最佳答案

因此,在将 MariaDB 升级到 10.0.14 后,我手动添加了全文索引,并且效果很好。也许存在从 MyIsam 索引到 XtraDB/InnoDB 索引的转换错误。

但应该工作正常的是:

  • 从 MyIsam 中删除您的索引
  • 将 MariaDB 升级到 10.x
  • 将 MyIsam 切换到 InnoDB
  • 手动添加索引

  • 您可以像这样在 MariaDB 中添加全文索引:
    ALTER TABLE your_table ADD FULLTEXT INDEX `ft_column_name` (column_name);
    

    之后,您应该能够按预期使用您的查询。

    关于mysql - MariaDB 10 中的全文索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25416423/

    10-13 07:52