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 » ?
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 :
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!