Maison > base de données > tutoriel mysql > Pourquoi est-ce que je reçois une erreur « La clé spécifiée était trop longue » lors de la migration de la base de données MySQL avec actes_as_taggable_on ?

Pourquoi est-ce que je reçois une erreur « La clé spécifiée était trop longue » lors de la migration de la base de données MySQL avec actes_as_taggable_on ?

Susan Sarandon
Libérer: 2025-01-04 07:20:35
original
307 Les gens l'ont consulté

Why Am I Getting a

Erreur de longueur de clé MySQL lors de la migration de la base de données

Lors d'une tentative de génération d'une migration à l'aide de actes_as_tagable_on, les utilisateurs peuvent rencontrer l'erreur :

<br>Mysql::Erreur : la clé spécifiée était trop longue ; la longueur maximale de la clé est de 1 000 octets<br>

Cette erreur indique que l'index en cours de création sur la table de balisage (index_taggings_on_taggable_id_and_taggable_type_and_context) dépasse la limite maximale de longueur de clé de 1 000 octets dans MySQL.

Cause

L'erreur est causée par une limitation de MySQL, en particulier lors de l'utilisation de moteurs comme MyISAM ou InnoDB. Ces moteurs imposent des restrictions sur la quantité d'espace disponible pour définir les index de colonnes. Pour MyISAM, la limite est de 1 000 octets, tandis que pour InnoDB, elle est de 767 octets. De plus, le type de données des colonnes indexées a un impact sur la consommation d'espace, les colonnes VARCHAR prenant environ trois fois la limite de caractères spécifiée.

Solution

Pour surmonter ce problème, les utilisateurs doivent créer un index personnalisé qui ne prend en compte qu'une partie du type de données de la colonne indexée. Par exemple, si la colonne taggable_id a un type de données VARCHAR(100), les utilisateurs peuvent spécifier :

CREATE INDEX example_idx ON taggings(taggable_id(50))
Copier après la connexion

En limitant l'index aux 50 premiers caractères de la colonne taggable_id, la taille de l'index peut être réduite à 150 octets, ce qui correspond à la limite autorisée. Cet index sera efficace pour les recherches impliquant uniquement les 50 premiers caractères de la colonne taggable_id.

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