2010-02-03 2 views
1

je traversais le journal des erreurs de mon application Rails et a constaté que quelqu'un avait couru dans l'erreur suivante:Unduplicatable erreur « Illegal mix de classements »

"Mysql::Error: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=': SELECT * FROM `tags` WHERE (name = LOWER('?')) LIMIT 1" 

Je comprends le raisonnement de cette erreur, mais je J'ai des problèmes à essayer de le réparer parce que je ne peux pas le reproduire. Ma connexion à la base de données utilise une connexion utf8 et le classement de la table tags est latin1_swedish_ci, mais peu importe ce que j'essaie de faire, je ne peux pas dupliquer l'erreur.

Dois-je juste changer tags pour utiliser utf8_general_ci collation et espérons que cela résout le problème? Ou est-ce que quelqu'un a d'autres idées?

Répondre

2

J'ai rencontré ce même numéro la semaine dernière. Dans mon cas, il s'est avéré que j'avais un champ répertorié latin1_swedish_ci dans une table qui était par ailleurs UTF-8. Si vous utilisez principalement une base de données UTF-8 et que nous parlons de données de chaîne, je voudrais juste aller de l'avant et modifier le classement et vous éviter des problèmes. À l'heure actuelle, vous ne l'utilisez peut-être pas de manière erronée, mais si vous oubliez de vous joindre à ces données, vous risquez de rencontrer des problèmes à l'avenir.

Questions connexes