#1071 - Specified key was too long; max key length is 1000 bytes

mysqlでテーブルをcreate仕様と思ったら、上記のようなエラーが出た。

#1071 - Specified key was too long; max key length is 1000 bytes

「キーの長さが長すぎ。1000バイトまで。」とのこと。

この時、createしようとしたTABLEには、char(25)とvarchar(400)の2列を主キーとして付与するようにcreate文を記述していた。

そういや、char(25)の「25」って文字数だっけ?バイト数だっけ?と思ったのだが、調べてみると「文字数」であった。
で、その1文字の長さはcharacter-setによって変わるとのこと。
latin-1なら1文字=1バイトだし、utf8なら1文字=3バイト。
私の環境はutf8だったので、キーに使えるのは333文字ということだ。
試してみたら、確かに、キーの文字列に使えるのは333文字までだった。

なお、「各列1000byteまで」ではなく「キーの列長の合計が1000byteまで」なので注意。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください