Problem:„Podany klucz był za długi; maksymalna długość klucza to 767 bajtów”
Jednym z tych problemów, na które możesz natknąć się korzystając z frameworka PHP Laravel, jest ten:
Specified key was too long; max key length is 767 bytes
Po kilku badaniach odkryłem, że pojawia się to w przypadku używania starszych wersji MySQL (przed 5.7.8) lub MariaDB (przed 10.2.2). W moim przypadku była to MariaDB.
Rozwiązanie nr 1:
W Laravel można to rozwiązać po prostu zmieniając konfigurację dostawcy usług aplikacji (w app/Providers/AppServiceProvider.php
) z następującymi:
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);
}
Po tym może być konieczne przebudowanie bazy danych za pomocą php artisan migrate:fresh --seed
- spowoduje to całkowite zresetowanie bazy danych i rozpoczęcie pracy od nowa.
Rozwiązanie nr 2:
Możesz także zaktualizować serwer bazy danych. Nie zostało to tutaj omówione, ponieważ jest bardzo specyficzne dla systemu. DuckDuckGo jest twoim przyjacielem 💪️