今までsjisとかujisとかだったMySQLのデータベースをutf8mb4に変換しようとしていたときの話。キーの最大長という壁にぶつかったらしい。 http://d.hatena.ne.jp/takihiro/20080306/1219295452 MySQLのリファレンスを見ると、こんなことが書いてある。 プレフィックスは、最大1000バイト長(InnoDBテーブルに対しては767バイト)まで可能です。プレフィックスの最大長はバイトで評価されます。一方、CREATE TABLEステートメント内のプレフィックス長は文字数として解釈されます。プレフィックス長を、マルチバイトキャラクタセットを使用するカラムに対して指定するときこのことを考慮に入れなければいけません。 ここでは、直接的にはTEXT型やBLOB型について言っているのだが、VARCHAR型なども同様。 ということで、以下のようなC

