エラーメッセージ
状態:-
閲覧数:1,007
投稿日:2017-03-28
更新日:2017-03-28
#3106 - 'Fulltext index on virtual generated column' is not supported for generated columns.
エラー原因
「Generated Column」にFULLTEXT KEYを貼る場合、STOREDでないと張れない(Virtualに張るとエラー発生)
MySQLバージョンアップに伴う「generated columns」仕様変更履歴
MySQL 5.7.6
generated column
・STOREDで作成するとデータ領域に計算後の結果が格納されてインデックスも貼れるようになる
MySQL 5.7.8
Changes in MySQL 5.7.8 (2015-08-03, Release Candidate)
・InnoDBは、仮想生成カラムのセカンダリインデックスをサポート
InnoDB: InnoDB now supports secondary indexes on virtual generated columns. For more information, see Secondary Indexes and Generated Columns.
InnoDBは生成された仮想カラムの二次インデックスをサポートしている
・ 他のインデックスタイプはサポートしていない
InnoDB supports secondary indexes on generated virtual columns. Other index types are not supported.
FULLTEXT インデックス
・未サポート
将来的には
VIRTUALで作成した「generated column」に対して、「FULLTEXT インデックス」作成できるようになる
・仮想列に空間索引または「fulltext index」を作成することはできない(この制限は最終的に解除される)
You cannot create a spatial or fulltext index on virtual columns (this limitation will eventually be lifted
遭遇例
MySQL 5.7.17
VIRTUALで作成した「generated column」に対して、「FULLTEXT インデックス」作成することは出来ない
CREATE TABLE sqltest.article2 (
id INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID オートインクリメント',
title VARCHAR(64) NULL DEFAULT NULL COMMENT 'タイトル',
content TEXT NULL COMMENT 'コンテンツ',
title_content TEXT AS (CONCAT(title, ' ', content)) VIRTUAL,
PRIMARY KEY (id),
FULLTEXT INDEX ngram_idx(title_content) WITH PARSER ngram
) COLLATE='utf8_bin' ENGINE=InnoDB;
ERROR 3106 (HY000): 'Fulltext index on virtual generated column' is not supported for generated columns.
#3106 - 'Fulltext index on virtual generated column' is not supported for generated columns.
STOREDで作成した「generated column」に対して、「FULLTEXT インデックス」作成することは出来る
・phpMyAdmin4.6.6ではエラーとなるため、作成不可
CREATE TABLE sqltest.article2 (
`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID オートインクリメント',
`title` VARCHAR(64) NULL DEFAULT NULL COMMENT 'タイトル',
`content` TEXT NULL COMMENT 'コンテンツ',
`title_content` TEXT AS (CONCAT(title, ' ', content)) STORED,
PRIMARY KEY (id),
FULLTEXT INDEX ngram_idx(title_content) WITH PARSER ngram
) COLLATE='utf8_bin' ENGINE=InnoDB;
エラー: 1118 SQLSTATE: 42000 (ER_TOO_BIG_ROWSIZE)
SELECT list is not in GROUP BY clause and contains nonaggregated column