Mysql::Erreur: la clé Spécifié est trop long; max la longueur de la clé est de 767 octets: CREATE INDEX
Je travaille avec des rails 2.3.5 application, dans lequel j'ai ce champ
t.string "trip_cities", :limit => 256
Et cet indice
add_index "bookings", ["trip_cities"], :name => "trip_cities"
Lorsque j'essaie d'exécuter:
bundle exec rake db:test:load
Je reçois cette erreur Mysql::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX 'trip_cities' ON 'bookings' ('trip_cities')
et ne sais pas trop comment résoudre ce problème.
OriginalL'auteur Andrew Kvartsky | 2013-11-12
Vous devez vous connecter pour publier un commentaire.
Il sonne comme le classement par défaut utilise le jeu de caractères UTF8.
MySQL limite la longueur des clés par octets, pas de caractères. Depuis l'UTF8 mise en œuvre MySQL utilise le permet pour 3 octets par caractère, la longueur maximum d'une touche sur un UTF8 colonne est de 3 fois la longueur de la clé en caractères (la longueur de clé est la longueur totale du champ si pas explicitement spécifié).
Dans ce cas, le max la longueur de la clé serait
256 * 3
qui est768
. Vous avez besoin de limiter la longueur de la clé ou de modifier le classement de la colonne.OriginalL'auteur G-Nugget
comment sur la modification de la migration elle-même:
Cela ne change pas le classement, c'est juste limite les données de sorte qu'il s'adapte à l'intérieur des contraintes imposées par le classement existant. La modification du classement devra arriver à la définition de la table sur le serveur. Cependant, cela peut être une meilleure façon de surmonter ce problème si la structure ne peut pas être modifié.
Aha. Pensez-vous que vous pourriez mettre à jour votre réponse avec un exemple de la façon de modifier le classement?
OriginalL'auteur Andrey Yasinishyn
Vous devez recréer votre base de données avec les options adéquates.
Cette contribué à moi avec le même problème
OriginalL'auteur Kein