sql >> データベース >  >> RDS >> MariaDB

Laravel:指定されたキーが長すぎました。キーの最大長は767バイトです

    問題:「指定されたキーが長すぎました。最大キー長は767バイトです」

    PHPフレームワークLaravelを使用して遭遇する可能性のあるこれらの問題の1つは、次のとおりです。

    Specified key was too long; max key length is 767 bytes
    

    いくつかの調査の結果、古いバージョンのMySQL(5.7.8より前)またはMariaDB(10.2.2より前)を使用すると、この問題が発生することがわかりました。私の場合はMariaDBでした。

    ソリューション#1:

    Laravelでは、これはアプリサービスプロバイダーの構成を変更するだけで解決できます(app/Providers/AppServiceProvider.php )次のように:

    use Illuminate\Support\Facades\Schema;
    
    public function boot()
    {
        /**
         * Ensure we aren't running into `Specified key was too long; max key length is 767 bytes`
         *
         * @see https://peterthaleikis.com/posts/laravel:-specified-key-was-too-long-max-key-length-is-767-bytes/
         **/
        Schema::defaultStringLength(191);
    }
    

    この後、php artisan migrate:fresh --seedを使用してデータベースを再構築する必要がある場合があります -これにより、データベースが完全にリセットされ、最初からやり直しになります。

    ソリューション#2:

    データベースサーバーをアップグレードすることもできます。これは非常にシステム固有であるため、ここでは説明していません。 DuckDuckGoはあなたの友達です💪️


    1. SQL ALTER TABLE

    2. PostgreSQLの日付に月を追加

    3. PostgreSQL12の新機能

    4. SQLで最低2つの値を取得する