Maison > base de données > tutoriel mysql > Pourquoi MySQL génère-t-il l'erreur n° 1071 : « La clé spécifiée était trop longue » ?

Pourquoi MySQL génère-t-il l'erreur n° 1071 : « La clé spécifiée était trop longue » ?

Patricia Arquette
Libérer: 2024-12-14 14:59:10
original
535 Les gens l'ont consulté

Why Does MySQL Throw Error #1071:

Erreur MySQL n° 1071 : approfondir les contraintes de longueur de clé

Lors de la tentative de modification d'une table MySQL en ajoutant une contrainte de clé unique sur deux VARCHAR colonnes, un message d'erreur plutôt déroutant apparaît : "#1071 - La clé spécifiée était trop longue ; la longueur maximale de la clé est de 767 octets". Bien que les deux colonnes aient des tailles qui semblent bien inférieures à la limite de 767 octets, la compréhension de cette erreur nécessite une analyse plus approfondie des contraintes de longueur de clé de MySQL.

Revisiter les limites de longueur de clé

La longueur maximale d'une clé dans MySQL version 5.6 et antérieures est en effet de 767 octets pour les tables InnoDB et de 1 000 octets pour Tableaux MyISAM. Cependant, dans MySQL version 5.7 et supérieure, cette limite a été étendue à 3 072 octets beaucoup plus grands.

Décodage du stockage VARCHAR

Alors que le type de données VARCHAR suggère un maximum stockage de 20 et 500 octets pour vos colonnes respectives, ce calcul ne prend pas en compte l'encodage des caractères. Si vos champs VARCHAR sont codés au format utf8mb4, la longueur maximale du préfixe d'index est effectivement réduite d'un quart, ce qui donne seulement 191 octets (767/4).

Trouver une solution de contournement

Pour résoudre ce problème, envisagez de mettre en œuvre l'une des solutions suivantes stratégies :

  • Réduire la taille des colonnes : Limitez la longueur maximale de vos champs VARCHAR pour répondre à la contrainte de longueur du préfixe d'index.
  • Sous-ensemble de la colonne : Utilisez seulement une partie de la colonne pour l'indexation, réduisant ainsi la longueur de la clé. Par exemple : ALTER TABLE mytable ADD UNIQUE ( column1(15), column2(200) );
  • Examinez le modèle de données : Réévaluez la conception de votre table et déterminez s'il existe des approches alternatives qui peut éviter de rencontrer cette limitation MySQL.

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