Maison > base de données > tutoriel mysql > Pourquoi est-ce que j'obtiens l'erreur MySQL n° 1071 : la clé spécifiée était trop longue ?

Pourquoi est-ce que j'obtiens l'erreur MySQL n° 1071 : la clé spécifiée était trop longue ?

Mary-Kate Olsen
Libérer: 2024-12-28 07:41:42
original
388 Les gens l'ont consulté

Why Am I Getting MySQL Error #1071: Specified Key Was Too Long?

Erreur MySQL n° 1071 : Comprendre les limitations de longueur de clé

Lors de la tentative d'ajout d'un index unique à une table avec des colonnes spécifiques (colonne1 et colonne2 ), les utilisateurs peuvent rencontrer l'erreur suivante :

#1071 - Specified key was too long; max key length is 767 bytes
Copier après la connexion

Bien qu'il semble initialement que la longueur combinée de la colonne 1 (20) et column2 (500) se situe dans la longueur de clé maximale de 767 octets, l'explication réelle réside dans la compréhension de la limitation d'indexation des préfixes de MySQL.

Dans les versions MySQL antérieures à 5.7, les tables InnoDB avaient une limitation d'indexation des préfixes de 767 octets, tandis que les tables MyISAM avaient une limite plus grande de 1 000 octets. Cela signifie que le nombre maximum d'octets utilisés par un index est basé sur la partie de départ de la ou des colonnes incluses dans l'index.

Dans l'exemple donné, colonne1 et colonne2 sont des colonnes VARCHAR(x). , qui stockent des chaînes de longueur variable. L'erreur se produit car MySQL considère toute la longueur de la colonne comme faisant partie de l'index, et pas seulement les données réelles stockées. Par conséquent, même si les données réelles de la colonne 1 et de la colonne 2 sont plus courtes que la longueur totale allouée, la taille de l'index dépasse la limite maximale.

Pour éviter cette erreur, les utilisateurs disposent de plusieurs options :

  • Limiter la longueur des colonnes VARCHAR : La définition d'une limite inférieure sur la longueur de VARCHAR garantit que la taille de l'index reste inférieure à la maximum.
  • Indexez uniquement une partie de la colonne : Spécifiez uniquement un sous-ensemble de caractères de chaque colonne dans la définition de l'index, tel que colonne1(15) et colonne2(200). Cela réduit la taille totale de l'index et permet de créer l'index.
  • Envisagez de revoir le modèle de données : Explorez d'autres moyens de mettre en œuvre des règles métier sans dépasser la limite de longueur de clé. Cela peut impliquer de diviser les données en plusieurs colonnes ou d'introduire des tables supplémentaires.

Comprendre l'impact de la longueur des colonnes sur la taille des index est crucial pour éviter les erreurs de longueur de clé MySQL. En gérant soigneusement la taille des colonnes et les définitions d'index, les utilisateurs peuvent implémenter avec succès des index et maintenir l'intégrité des données sans dépasser les limites de la base de données.

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