sql >> Database >  >> RDS >> MariaDB

Laravel:Opgegeven sleutel was te lang; maximale sleutellengte is 767 bytes

Het probleem:"Opgegeven sleutel was te lang; maximale sleutellengte is 767 bytes"

Een van deze problemen die je zou kunnen tegenkomen bij het gebruik van het PHP-framework Laravel, is deze:

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

Na wat onderzoek heb ik ontdekt dat het eraan komt bij het gebruik van oudere versies van MySQL (vóór 5.7.8) of MariaDB (vóór 10.2.2). In mijn geval was het MariaDB.

Oplossing #1:

In Laravel kan dit eenvoudig worden opgelost door de configuratie van uw app-serviceprovider te wijzigen (in app/Providers/AppServiceProvider.php ) met het volgende:

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

Hierna moet u mogelijk uw database opnieuw opbouwen met behulp van php artisan migrate:fresh --seed - dit zal je database volledig resetten en een frisse start maken.

Oplossing #2:

U kunt ook uw databaseserver upgraden. Dit is hier niet besproken omdat het erg systeemspecifiek is. DuckDuckGo is je vriend 💪️


  1. Top AWR nuttige vragen voor R12.2/R12.1 Upgrade

  2. SQL Server-triggers:DML-triggers

  3. TIMESTAMPADD() Voorbeelden – MySQL

  4. Begrip van opnieuw uitvoeren van loggroep versus bestand versus lid