tohokuaikiのチラシの裏

技術的ネタとか。

Laravel5.4でAuthをつけたときにMySQLのmigrationでエラー

artisan migrateするとエラー。

specified key was too long max key length is 767 bytes

原因はだいたいここら辺で。

qiita.com

で、対策としてあげられている2つ

  • 使用するcharasetをutf8mb4から変更する は、app/Providers/AppServiceProvider.php
<?php
class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
        Schema::defaultStringLength(191);
    }

というようにbootでvarcharのデフォルト値を191にするということ。

  • カラムの最大値を変更し、767bytes以上の文字列が入らないようにする

絵文字いらないって言うのであれば、config/database.php

        'mysql' => [
            'driver' => 'mysql',
            ..(略)..
            'charset' => 'utf8mb4',
            'collation' => 'utf8_unicode_ci',

        'mysql' => [
            'driver' => 'mysql',
            ..(略)..
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',

にする。こっちの方が良い感じがする。