エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

mysqlのutf8mb4でverchar(255)のカラムにindexが張れない

こちらと同様の対策を行いました。
MySQL(InnoDB) で "Index column size too large. The maximum column size is 767 bytes." いわれるときの対策

なぜinnodb_large_prefixがデフォルトではOFFでROW_FORMATはデフォルトがCOMPACTなのか。

innodb_large_prefixがONに出来るのはROW_FORMATがDYNAMICまたはCOMPRESSEDのときだと。

ここにその説明が載っていますが、innodb_file_formatがBarracudaでないとこれは出来ないと。 自分はmysql5.6.13だったのでデフォでinnoDB pluginというものが有効になっていてデフォでfile formatがBarracudaでした。

バラクーダと言ったらDQ4の敵を思い出すしか無いんですが、こいつの攻撃がめちゃくちゃヤバくてブライとかが一撃で持ってかれた気がします。

f:id:J_ogawa:20140119024704g:plain

で、DYNAMICですが、ここをよむと何やらデフォのCOMPACTより複雑だ、みたいな感じですね・・。

COMPRESSEDはデータ圧縮を行う形みたいでこれも複雑になりますね。
InnoDB Pluginことはじめ。快適ストレージエンジン生活はじまる!

いや〜、MySQLむずかしい。