Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-31 04:39:30
original
957 Les gens l'ont consulté

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>
Copier après la connexion
  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>
Copier après la connexion
  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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal