Written by Manabu Bannai

【エラー解決方法】Specified key was too long【Laravel5.4】

Laravel PROGRAMMING


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秒で解約できます。無料登録は「こちら」です。