カテゴリー
Laravel

laravel migrate エラー Illuminate\Database\QueryException

確認環境:

laravel 5.4

ロリポップ スタンダードプラン

php >= 5.6.4

mysql

laravel 5.4 で migrate したら、以下のエラーが出ました。

対処方法をメモしておきます。

エラー内容

[Illuminate\Database\QueryException]                        SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`)) [PDOException]                                          SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

対処方法

app/Providers/AppServiceProvider.php

を以下のように編集します。

6、13

行目のコードを追加します。

<?php
  namespace App\Providers;

  use Illuminate\Support\ServiceProvider;
  use Illuminate\Support\Facades\Schema; //追加

class AppServiceProvider extends ServiceProvider { 
  /** * Bootstrap any application services. *
  * @return void */
  
  public function boot() {//
    Schema::defaultStringLength(191); //追加
  }
  /** * Register any application services. *
  * @return void */
  public function register() { //
  }
}

この後、

php artisan migrate:refresh

します。

ロリポップでは、

/usr/local/php7.1/bin/php artisan migrate:refresh

します。

参考:
Laravel 5.4: Specified key was too long error