sql >> Databasteknik >  >> RDS >> MariaDB

Laravel:Angiven nyckel var för lång; max nyckellängd är 767 byte

Problemet:"Specificerad nyckel var för lång; max nyckellängd är 767 byte"

Ett av dessa problem du kan snubbla över med PHP-ramverket Laravel är det här:

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

Efter lite forskning har jag fått reda på att det kommer upp när man använder äldre versioner av MySQL (före 5.7.8) eller MariaDB (före 10.2.2). Det var MariaDB i mitt fall.

Lösning #1:

I Laravel kan detta lösas helt enkelt genom att ändra konfigurationen av din apptjänstleverantör (i app/Providers/AppServiceProvider.php ) med följande:

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

Efter detta kan du behöva bygga om din databas med php artisan migrate:fresh --seed - detta kommer att återställa din databas fullständigt och börja om på nytt.

Lösning #2:

Du kan också uppgradera din databasserver. Detta har inte diskuterats här eftersom det är väldigt systemspecifikt. DuckDuckGo är din vän 💪️


  1. Hur man kontrollerar storleken på en databas i MySQL

  2. Konvertera SQLITE SQL dumpfil till POSTGRESQL

  3. Introduktion till OPENJSON med exempel (SQL-server)

  4. Ingen funktion matchar det angivna namnet och argumenttyperna