CREATE TABLE tags ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), created DATETIME, modified DATETIME, UNIQUE KEY (title) );
このtitle属性は255文字までを格納する。
同じ文のタグを重複して登録することは許されないため、ユニークキーとして扱いたい。
しかし、例えば文字コードにutfmb4を設定しているとき、utfmb4は各文字4バイトで表現するので総バイト数は 4 * 255 = 1020Bとなり、 767バイトをゆうに超えてしまう。
解決策としては 各文字にかかるバイト数 * 最大文字数 < 767 となるようにSQLを変更する。
上記の場合では191文字が限界。そのため3行目が
title VARCHAR(191)
となる。