MySQLのユニークキーに使えるのは767byte(255文字)まで

MySQLのユニークキーはデータを重複しないように管理したいときには便利な機能ですが、文字数の制限があります。使える文字数はUTF8などでは255文字です。これは半角でも全角でもこの”文字数”です。人の名前や住所などで255文字を超えることは滅多にありませんが、URLなどのデータでは考えられます。

対処方法としては、そんなに長いキーをユニークキーとして設定しないことが一番良いことだと思いますが、仕方ないときもあると思います。消極的な対応策としては、そのキーで使う文字セット(phpMyAdminでは「照合順序」)をLatin1やASCIIにすることで、1バイト文字(半角文字)をそのまま1バイトで扱うことができます。こうすると、半角で767文字まで使うことができます。