sql >> Database teknologi >  >> RDS >> MariaDB

Laravel:Den angivne nøgle var for lang; max nøglelængde er 767 bytes

Problemet:"Den angivne nøgle var for lang; maks. nøglelængde er 767 bytes"

Et af disse problemer, du måske støder på ved at bruge PHP-rammeværket Laravel, er dette:

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

Efter lidt research har jeg fundet ud af, at det kommer op, når du bruger ældre versioner af MySQL (før 5.7.8) eller MariaDB (før 10.2.2). Det var MariaDB i mit tilfælde.

Løsning #1:

I Laravel kan dette løses ved blot at ændre konfigurationen af ​​din app-tjenesteudbyder (i app/Providers/AppServiceProvider.php ) med følgende:

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

Herefter skal du muligvis genopbygge din database ved hjælp af php artisan migrate:fresh --seed - dette vil nulstille din database fuldstændigt og starte på en frisk.

Løsning #2:

Du kan også opgradere din databaseserver. Dette er ikke blevet diskuteret her, da det er meget systemspecifikt. DuckDuckGo er din ven 💪️


  1. World Backup Day:Hvordan og hvornår skal du sikkerhedskopiere din database?

  2. Hvordan henter jeg mit MySQL-brugernavn og -adgangskode?

  3. Sådan bruges EXECUTE FORMAT ... BRUG i postgres-funktionen

  4. syntaksfejl med opdateringsforespørgsel, når du slutter dig til en tabel