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))
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!