Maison > base de données > tutoriel mysql > Comment résoudre l'erreur MySQL : « La clé spécifiée était trop longue ; la longueur maximale de la clé est de 1 000 octets » ?

Comment résoudre l'erreur MySQL : « La clé spécifiée était trop longue ; la longueur maximale de la clé est de 1 000 octets » ?

Mary-Kate Olsen
Libérer: 2025-01-03 09:10:39
original
404 Les gens l'ont consulté

How to Solve MySQL Error:

Dépannage "Mysql::Erreur : la clé spécifiée était trop longue ; la longueur maximale de la clé est de 1 000 octets"

Lors de la tentative d'exécution de ce qui suit commandes :

script/generate acts_as_taggable_on_migration
rake db:migrate
Copier après la connexion

vous pouvez rencontrer le erreur :

Mysql::Error: Specified key was too long; max key length is 1000 bytes: CREATE INDEX `index_taggings_on_taggable_id_and_taggable_type_and_context` ON `taggings` (`taggable_id`, `taggable_type`, `context`)
Copier après la connexion

Cause

Cette erreur se produit en raison des restrictions imposées par les moteurs de stockage de MySQL sur la taille des index. Les moteurs MyISAM, couramment utilisés avec Ruby on Rails, limitent la taille des index à 1 000 octets.

Solution

Pour résoudre ce problème, envisagez les stratégies suivantes :

  • Réduire la taille de l'index : Examinez les colonnes impliquées dans l'index et déterminez si certaines peuvent être raccourci sans réduire l'utilité. Par exemple, si une colonne stocke des noms complets, envisagez de les tronquer aux 50 premiers caractères.
  • Index de partition : Divisez l'index en index distincts sur des sous-ensembles de colonnes. Par exemple :
CREATE INDEX example_idx_id ON YOUR_TABLE(taggable_id)
CREATE INDEX example_idx_type ON YOUR_TABLE(taggable_type)
Copier après la connexion
  • Changer le moteur de stockage : Envisagez de migrer vers InnoDB, qui prend en charge des tailles d'index plus grandes (jusqu'à 767 octets). Cependant, cela peut nécessiter une configuration supplémentaire et peut ne pas convenir à toutes les applications.

Configuration supplémentaire

Comme l'indiquent les paramètres d'encodage de votre base de données, votre base de données est configuré pour utiliser le codage de caractères latin1. Cela peut limiter l'efficacité des index sur les colonnes utilisant le codage UTF-8. Pour améliorer les performances de l'index, envisagez de convertir votre base de données au codage UTF-8.

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