Maison >base de données >tutoriel mysql >Erreur de migration Laravel 5.4 : comment corriger « La clé spécifiée était trop longue » ?

Erreur de migration Laravel 5.4 : comment corriger « La clé spécifiée était trop longue » ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 21:39:11811parcourir

Laravel 5.4 Migration Error: How to Fix

Erreur de migration Laravel : "La clé spécifiée était trop longue"

Problème rencontré :

Lors de la tentative d'utilisation du make Commande :auth dans Laravel 5.4, une erreur de migration de base de données se produit :

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

Solution :

Pour résoudre ce problème, couramment rencontré lors de l'utilisation du moteur MySQL InnoDB par défaut, il existe deux approches :

Méthode AppServiceProvider :

  1. Ouvrir app/Providers/AppServiceProvider.php.
  2. Ajoutez le code suivant dans la méthode de démarrage :
use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191);
}

Configuration du serveur MySQL :

Vous pouvez également modifier la configuration du serveur MySQL pour activer l'option innodb_large_prefix. Les instructions spécifiques pour activer cette option varient en fonction de la configuration de votre base de données. Reportez-vous à la documentation MySQL pour obtenir des conseils.

Notes supplémentaires :

  • La solution fournie est spécifique à Laravel 5.4. Pour les autres versions, reportez-vous à la documentation correspondante.
  • La méthode defaultStringLength(191) définit la longueur de chaîne maximale par défaut pour toutes les colonnes de la base de données à 191 caractères.
  • L'option innodb_large_prefix permet à MySQL d'utiliser un préfixe plus grand pour les index, résolvant la limitation de longueur de clé.

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