Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que je reçois une erreur « La clé unique est trop longue » lors des migrations Laravel ?

Pourquoi est-ce que je reçois une erreur « La clé unique est trop longue » lors des migrations Laravel ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 04:39:30950parcourir

Why Am I Getting a

Dépannage des erreurs de migration de Laravel : "La clé unique est trop longue"

Lorsque vous essayez de migrer une table d'utilisateurs dans Laravel, vous pouvez rencontrer le erreur : "[IlluminateDatabaseQueryException]... La clé spécifiée était trop longue ; la longueur maximale de la clé est de 767 octets." Cette erreur se produit lorsque la clé unique que vous avez spécifiée dépasse la longueur maximale autorisée.

Comprendre le problème

La longueur de chaîne par défaut dans Laravel pour les colonnes comme l'e-mail est de 255 personnages. Lorsque vous tentez de créer une clé unique sur une colonne avec une chaîne plus longue (dans ce cas, 320 caractères pour la colonne email), la migration échoue.

Correction de l'erreur

  1. Réduisez la longueur de la chaîne de courrier électronique : Spécifiez une longueur plus courte pour la colonne de courrier électronique dans votre migration :
<code class="php">$table->string('email', 250);</code>
  1. Utilisez Longueur de chaîne par défaut :Utilisez la longueur de chaîne par défaut pour la colonne de courrier électronique :
<code class="php">$table->string('email');</code>
  1. Définir la longueur de chaîne par défaut dans AppServiceProvider (Laravel 5.4 et versions ultérieures) :

Dans le fichier AppServiceProvider.php, dans la méthode de démarrage, définissez la longueur de chaîne par défaut pour toutes les migrations :

<code class="php">use Illuminate\Database\Schema\Builder;

public function boot()
{
    Builder::defaultStringLength(191);
}</code>

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