はじめに

先日、少しLaravelを触ったときにエラーになったことをメモします。
いきなりエラーになったのでビックリしました。。。

バージョン

  • Laravel 5.4

参考資料

Laravel 5.4: Specified key was too long error

状況

php artisan migrate実行時に下記エラーになる。

$ php artisan migrate

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

背景

  • Laravel 5.4からデータベースのデフォルト文字コードがutf8mb4になった。
  • MySQL 5.7.7以前、もしくはMariaDBを使用している場合に起こる可能性がある。

対応

app/Providers/AppServiceProvider.phpを下記のように修正すれば大丈夫なようです。
Schemaの使用宣言とbootの中で文字長の宣言をします。)

<?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()
      {
          //
      }
}

おわりに

簡単ですが、今回は以上になります。
Laravelもまだ触っている段階ですが、面白そうなFWだと思います。
そのため、導入できそうなところがあれば使用していきたいと思います!

Shere
  • はてなブログ
  • Twitter
  • Facebook
Laravelでマイグレーションするときに「Specified key was too long」になる問題

Writer

  • Name

    Naoki

  • Position

    RubyやPHPが書きたい雑用

  • Profile

    最近、(自称)PHPerから(自称)Rubyistに移行しようと考えている雑用です。Rubyのオブジェクト 指向はすごい分かりやすいので好きになりました。また、メソッド名に?が使えるのも良いですよね!