sql >> Databáze >  >> RDS >> MariaDB

Laravel:Zadaný klíč byl příliš dlouhý; maximální délka klíče je 767 bajtů

Problém:"Zadaný klíč byl příliš dlouhý; maximální délka klíče je 767 bajtů"

Jeden z těchto problémů, na který byste mohli narazit při používání frameworku PHP Laravel, je tento:

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

Po nějakém průzkumu jsem zjistil, že se to objevuje při používání starších verzí MySQL (před 5.7.8) nebo MariaDB (před 10.2.2). V mém případě to byla MariaDB.

Řešení č. 1:

V Laravelu to lze vyřešit jednoduše změnou konfigurace poskytovatele služeb aplikace (v app/Providers/AppServiceProvider.php ) s následujícím:

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);
}

Poté možná budete muset znovu sestavit databázi pomocí php artisan migrate:fresh --seed - to zcela resetuje vaši databázi a začnete znovu.

Řešení č. 2:

Můžete také upgradovat databázový server. Toto zde nebylo probíráno, protože je to velmi specifické pro systém. DuckDuckGo je váš přítel 💪️


  1. Omezení CHECK v MySQL nefunguje

  2. Příkazový řádek Windows PSQL:existuje způsob, jak umožnit přihlášení bez hesla?

  3. Jak otevřít databázi v exkluzivním režimu v Accessu 2016

  4. 5 způsobů, jak spustit SQL skript ze souboru v SQLite