Maison >développement back-end >tutoriel php >Comment corriger les erreurs de longueur de clé unique dans les migrations Laravel ?

Comment corriger les erreurs de longueur de clé unique dans les migrations Laravel ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 02:32:02938parcourir

How to Fix Unique Key Length Errors in Laravel Migrations?

Problème de longueur de clé unique dans les migrations Laravel

Dans Laravel, lors de la création de clés uniques pour les colonnes de table, il est possible de rencontrer une erreur indiquant que la clé spécifiée est trop longue. Ce problème survient lorsque la longueur de la colonne définie pour la clé unique dépasse la longueur maximale autorisée.

Dépannage du problème

La migration fournie spécifie une contrainte unique sur le Colonne « email » d’une longueur de 320 caractères. Cependant, par défaut, la colonne « email » dans Laravel est définie comme une chaîne avec une longueur par défaut de 255. Cette longueur par défaut devrait être suffisante pour la plupart des adresses e-mail.

Pour résoudre le problème, pensez à réduire la longueur de la colonne 'email' dans la migration vers une valeur raisonnable, telle que 250 caractères :

$table->string('email', 250);

Alternativement, vous pouvez spécifier explicitement la longueur de la clé unique comme deuxième paramètre de 'unique() ' :

$table->unique('email', 'users_email_uniq', 320);

Laravel 5.4 et au-delà

Pour les versions Laravel 5.4 et ultérieures, une solution plus complète est disponible. Dans le fichier « AppServiceProvider.php », ajoutez le code suivant à la méthode « boot() » :

use Illuminate\Database\Schema\Builder;

public function boot()
{
    Builder::defaultStringLength(191);
}

La définition de la longueur de chaîne par défaut sur 191 garantit que les colonnes créées à l'aide de la méthode « string() » aura une longueur maximale de 191 caractères, éliminant ainsi la probabilité de rencontrer le problème de longueur de clé unique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn