次の MyISAM テーブルがあります
mysql> show create table product_desc\G
*************************** 1. row ***************************
Table: product_desc
Create Table: CREATE TABLE `product_desc` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`product_id` int(10) unsigned DEFAULT '0',
`title` varchar(100) DEFAULT NULL,
`description` varchar(5000) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `title` (`title`,`description`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
ただし、次のコマンドでテーブルを変更(インデックスを追加)したい場合、エラーが発生しました。
mysql> ALTER TABLE product_desc ADD INDEX `description` (`description`);
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
奇妙なことに、これは Mac OSX でのみ発生し、私の ubuntu サーバーでは発生しません。したがって、サーバーの結果テーブルを確認すると、次のようになります。
mysql> show indexes from product_desc;
+------------------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+------------------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| product_desc | 0 | PRIMARY | 1 | id | A | 5 | NULL | NULL | | BTREE | | |
| product_desc | 1 | description | 1 | description | A | 5 | 333 | NULL | YES | BTREE | | |
| product_desc | 1 | title | 1 | title | NULL | 1 | NULL | NULL | YES | FULLTEXT | | |
| product_desc | 1 | title | 2 | description | NULL | 1 | NULL | NULL | YES | FULLTEXT | | |
+------------------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
6 rows in set (0.00 sec)
興味深いのは、description
インデックスが自動的に 333 プレフィックス長を取得することです。同じ結果を得るために MacOS my.cnf に設定する必要がある構成変数はありますか?