Symfony、というかDoctrineでmigrateしたら、うっかり以下のようなエラーに遭遇。
Index column size too large. The maximum column size is 767 bytes.
utf8mb4だと、varchar(255)とかインデックス張ると767バイト超えてしまって失敗してしまうっていうやつ。
これを解消しようと思うと、innodb_large_prefixを有効にすればいいのだけど、そのためにはinnodb_file_formatをBarracudaにして、テーブルのROW_FORMATをDYNAMIC(COMPRESSEDでもいい)にしなきゃいけない。
ということで、*.cnfに以下を追記。
innodb_large_prefix = 1 innodb_file_format = Barracuda innodb_file_format_max = Barracuda
で、マイグレーションファイルを開いて、$this->addSql('CREATE TABLE ...')の末尾にROW_FORMAT=DYNAMICを付け足したり、$this->addSql('ALTER TABLE foo ROW_FORMAT=DYNAMIC;')の一行を追加したりとか、状況に応じてすればいい。