2010年2月19日金曜日

MySQLのエラーメッセージ「#1071 - specified key was too long; max key length is 1000 bytes」

MySQLのエラーエラーメッセージ「#1071 - specified key was too long; max key length is 1000 bytes」が、表示されました。テーブルに、キーを設定する際、その長さに注意しないといけないんですね。キーを単一カラムに適用する場合は、特に問題ないようですが、複数カラムにわたって、設定するような場合は、注意が必要なようです。

以下、簡単な説明サンプルです。会員テーブル(member)のログインID(id)とパスワード(password)にユニークキー(id_password)を設定する場合です。

CREATE TABLE `member` (
`no` integer NOT NULL auto_increment,
`id` varchar(200) NOT NULL,
`password` varchar(100) NOT NULL,
PRIMARY KEY  (`no`)
) DEFAULT CHARACTER SET utf8;

create unique index id_password on member(id,password) ;

エラーなし。
(id と password) × UTF-8の3バイトで、 (200 + 100) × 3 = 900 となり、1000バイト以下なので、OK。

CREATE TABLE `member` (
`no` integer NOT NULL auto_increment,
`id` varchar(200) NOT NULL,
`password` varchar(200) NOT NULL,
PRIMARY KEY  (`no`)
) DEFAULT CHARACTER SET utf8;

create unique index id_password on member(id,password) ;

#1071 - Specified key was too long; max key length is 1000 bytes 
(id と password) × UTF-8の3バイトで、
(200 + 200) × 3 = 1200
となり、1000バイトを超えて、エラーになってしまうようです。


英語ですが、以下のページに、わかりやすいサンプルが記載されています。

0 件のコメント:

コメントを投稿