Maison >base de données >tutoriel mysql >Erreur de migration Laravel : comment corriger « La longueur de la clé unique dépasse la limite » ?

Erreur de migration Laravel : comment corriger « La longueur de la clé unique dépasse la limite » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-05 17:52:11898parcourir

Laravel Migration Error: How to Fix

Erreur de migration Laravel : la longueur de la clé unique dépasse la limite

Lors de la tentative de migration d'une table d'utilisateurs dans Laravel à l'aide d'une migration, les développeurs peuvent rencontrer le erreur : "[SQLSTATE[42000] : Erreur de syntaxe ou violation d'accès : 1071 La clé spécifiée était trop longue ; la longueur maximale de la clé est 767 octets." Cette erreur se produit généralement lorsque la clé unique spécifiée est plus longue que la longueur maximale autorisée.

Énoncé du problème

La migration fournie tente de créer une table d'utilisateurs avec une clé unique dans la colonne email. Cependant, la colonne e-mail est spécifiée pour avoir une longueur de 320 caractères, dépassant la limite de longueur maximale.

Solution

1. Réduire la longueur de la colonne d'e-mail

Réduisez la longueur de la colonne d'e-mail à une valeur plus petite, telle que 250 ou la valeur par défaut de 191 caractères. Ajustez la migration comme suit :

Schema::create('users', function(Blueprint $table)
{
    // ...

    $table->string('email', 250); // Update the email column length

    // ...
});

2. Définir la longueur de chaîne par défaut (Laravel 5.4)

Si vous utilisez Laravel 5.4 ou une version ultérieure, vous pouvez définir une longueur de chaîne par défaut dans la méthode de démarrage du fichier AppServiceProvider.php :

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

Cela définira une longueur par défaut de 191 caractères pour toutes les colonnes de chaînes créées lors des migrations, garantissant que les clés uniques ne dépassent pas la longueur autorisée. longueur.

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