[MySQL]エラー「ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes」が出るとき

カテゴリ: MySQL

発生した事象

MySQLでcreate tableを実行した所、下記のERROR 1214が発生した。

ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

エラーの例

$ mysql -u root -D sakila
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 30
Server version: 5.5.57 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE TABLE film_text (
    ->   film_id SMALLINT NOT NULL,
    ->   title VARCHAR(255) NOT NULL,
    ->   description TEXT,
    ->   PRIMARY KEY  (film_id),
    ->   FULLTEXT KEY idx_title_description (title,description)
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;

ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes

エラーが発生する原因

ERROR-1214はFULLTEXTインデックスが作成できないというエラーです。InnoDBストレージでのFULLTEXTインデックスはMySQLの5.6以上から使用することができます。上記の例では、MySQLサーバのバージョンが5.5.xだったため、バージョンが古すぎるのが原因でした。

MySQLのバージョンは、下記のコマンドで確認することができます。

$ mysql --version
mysql  Ver 14.14 Distrib 5.5.57, for Linux (x86_64) using readline 5.1

解決方法

本問題の対処方法は2つあります。

  • MySQLのバージョンを5.6以上にする
  • create tableでストレージエンジンをMyISAM形式にする

後者の場合、以下のようにENGINE=MyISAMを指定すればOKですが、テーブルをMyISAMで作るとトランザクション処理が行えない問題があるので、システム設計を見直しが必要になってきます。

mysql> CREATE TABLE film_text (
    ->   film_id SMALLINT NOT NULL,
    ->   title VARCHAR(255) NOT NULL,
    ->   description TEXT,
    ->   PRIMARY KEY  (film_id),
    ->   FULLTEXT KEY idx_title_description (title,description)
    -> )ENGINE=MyISAM DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。