【PHP】laravelのマイグレーション時に「1071 Specified key was too long; max key length is 767 bytes」のエラー対処

Linux

はじめに

laravelのマイグレーションコマンド「php artisan migration」実行時「1071 Specified key was too long; max key length is 767 bytes」のエラーが発生しました。
原因は文字コード(utf8mb4)によるString型のカラムのデータ長が767バイトの制限を超えるのが原因らしいです。
対処方法は、String型の最大長を指定して制限(191バイト)をかけます。

手順

app\Providers\AppServiceProvider.phpを編集し、boot内に以下の1行を付け足します。

public function boot()
    {
        \Illuminate\Support\Facades\Schema::defaultStringLength(191);
    }

まとめ

今回の環境は、MySQL5.5+laravel6.04です。
日本語使用(utfmb4)でlaravelでマイグレーションする時、必ず発生する問題です。
MySQL5.7.7以降(正式には5.7.9以降)では、発生しないので今回の作業は不要です。

コメント