【エラー解決方法】Specified key was too long【Laravel5.4】
MAMPで開発環境を構築して、Laravel5.4をいじっていたらエラーが起きたので解決方法のメモ。
開発環境の整理
- Laravel 5.4
- PHP 7.1.1
- MSQL 5.6.35
エラー内容
[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t oo 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 t oo long; max key length is 767 bytes
エラーの原因と解決方法
MSQL 5.7以上じゃないとエラーが出るようです。
解決方法は簡単で、app/Providers/AppServiceProvider.php
を編集します。①と②の2箇所を修正してください。
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
// ①:ここを追記する
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
// ②:ここを追記する
Schema::defaultStringLength(191);
}
その後に、mingrateします。
$php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table
これで完了。やったね!
参考:Laravel 5.4: Specified key was too long error – Laravel News
※P.S:無料メルマガで発信中:過去の僕は「ブログ発信で5億円」を稼ぎました。次は「30億円」を目指します。挑戦しつつ、裏側の思考を「メルマガ」から発信します。不満足なら1秒で解約できます。無料登録は「こちら」です。