MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Laravel:Określony klucz był za długi; maksymalna długość klucza to 767 bajtów

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak TIME_FORMAT() działa w MariaDB

  2. Jak TIME_TO_SEC() działa w MariaDB

  3. Jak odzyskać klaster Galera lub replikację MySQL z zespołu rozszczepionego mózgu?

  4. Jak PERIOD_ADD() działa w MariaDB

  5. 5 funkcji do wyodrębnienia numeru tygodnia z daty w MariaDB