#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まで」なので注意。

Follow me!


コメントを残す

メールアドレスが公開されることはありません。