Laravel5.4からデフォルトの文字コードがutf8mb4になりました。
migrationでいきなり下記のようなエラーが出たりします。(MysqlのVersionや設定によるはず)
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified
key was too long; max key length is 767 bytes
カラムの文字数制限を255文字から191文字に変更して対処する方法もありますが、191ってなんだよみたいな気持ちがどうしてもあるので別の解決方法が以下。
my.cnf
[mysqld]
innodb_large_prefix
innodb_file_format=BARRACUDA
innodb_file_per_table
config/database.php
...
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',
...
追記(2017/2/22 20:02)
はじめ
'engine' => 'InnoDB ROW_FORMAT=COMPRESSED',
と書きましたがversion 5.7.9以降のデフォルトがDYNAMICとのことなのでそれに合わせて修正しました。
※5.6ではmy.cnfでこの値をデフォルトに設定できないようなので注意。
(例えばlaravelのmigrationを使わず別のROW_FORMATで作成したテーブルが混在していた場合どうなるか等調べてません。)