web-dev-qa-db-ja.com

MySQL FULLTEXTインデックスの問題

テーブルの属性にFULLTEXTインデックスを作成しようとしています。 Mysqlが戻る

エラー1214:使用されているテーブルタイプはFULLTEXTインデックスをサポートしていません。

私が間違っていることは何か考えていますか?

29
user119038

間違ったタイプのテーブルを使用しています。 Mysqlはいくつかの異なるタイプのテーブルをサポートしますが、最も一般的に使用されるのはMyISAMとInnoDBです。 MyISAM(MySQL 5.6以降ではInnoDBテーブル)は、Mysqlがフルテキストインデックス用にサポートするテーブルのタイプです。

テーブルのタイプを確認するには、次のSQLクエリを発行します。

SHOW TABLE STATUS

クエリによって返された結果を見て、エンジン列でテーブルと対応する値を見つけます。この値がMyISAMまたはInnoDB以外の場合、FULLTEXTインデックスを追加しようとすると、Mysqlはエラーをスローします。

これを修正するには、以下のSQLクエリを使用してエンジンタイプを変更します。

ALTER TABLE <table name> ENGINE = [MYISAM | INNODB]

追加情報(役立つと思われる):Mysqlは、さまざまなエンジンストレージタイプを使用して、特定のテーブルに必要な機能を最適化します。例MyISAMは、(Windows以外の)オペレーティングシステムのデフォルトタイプであり、SELECTとINSERTをすばやく実行します。ただし、トランザクションは処理しません。 InnoDBはウィンドウのデフォルトであり、トランザクションに使用できます。しかし、InnoDBはサーバー上により多くのディスク容量を必要とします。

55
Cimplicity

MySQL 5.6までは、MyISAMが全文検索(FTS)をサポートする唯一のストレージエンジンでしたが、MySQL 5.6のInnoDB FTSが構文的にMyISAM FTSと同じであることは事実です。詳細については、以下をお読みください。

MySQL 5.6のInnoDB全文検索

10

mysql manual は、FULLTEXTインデックスは、mylsamエンジンを使用するテーブルでのみ作成できることを示しています。

7
soulmerge

InnoDBを使用していますか? FULLTEXTをサポートする唯一のテーブルタイプはMyISAMです。

5

myISAMテーブル以外のPARTITIONINGfull-textインデックスをサポートしていません。