FULLTEXT индексы в MariaDB 10

В документации MariaDB говорится, что индексы FULLTEXT для InnoDB поддерживаются начиная с версии 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, эта операция должна поддерживаться, и все же я вижу ошибку. Нужно ли делать что-то еще, чтобы включить индексы FULLTEXT в MariaDB 10.0.13?

1 ответ

Поэтому после обновления MariaDB до 10.0.14 я добавил полнотекстовые индексы вручную, и это сработало отлично. Возможно, есть ошибка преобразования из индекса MyIsam в индекс XtraDB/InnoDB.

Но то, что должно было работать нормально, это:

  1. Удалить ваши индексы из MyIsam
  2. Обновите MariaDB до 10.x
  3. Переключить MyIsam на InnoDB
  4. Добавить индексы вручную

Вы можете добавить полнотекстовый индекс в MariaDB следующим образом:

ALTER TABLE your_table ADD FULLTEXT INDEX `ft_column_name` (column_name);

После этого вы сможете использовать ваши запросы, как и ожидалось.

Другие вопросы по тегам