発生した事象
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)
こちらもおススメ