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 💪️