MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Laravel :la clé spécifiée était trop longue ; la longueur maximale de la clé est de 767 octets

Le problème :"La clé spécifiée était trop longue ; la longueur maximale de la clé est de 767 octets"

L'un de ces problèmes que vous pourriez rencontrer en utilisant le framework PHP Laravel est celui-ci :

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

Après quelques recherches, j'ai découvert que cela se produisait lors de l'utilisation d'anciennes versions de MySQL (avant 5.7.8) ou MariaDB (avant 10.2.2). C'était MariaDB dans mon cas.

Solution n° 1 :

Dans Laravel, cela peut être résolu simplement en modifiant la configuration de votre fournisseur de services d'application (dans app/Providers/AppServiceProvider.php ) avec les éléments suivants :

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

Après cela, vous devrez peut-être reconstruire votre base de données en utilisant php artisan migrate:fresh --seed - cela réinitialisera complètement votre base de données et repartira à neuf.

Solution n° 2 :

Vous pouvez également mettre à niveau votre serveur de base de données. Cela n'a pas été discuté ici car il est très spécifique au système. DuckDuckGo est votre ami 💪️