2010-12-14 59 views
0

Comment résoudremélange illégal de collations (latin5_turkish_ci, IMPLICIT) et (latin1_swedish_ci, Coercible) pour l'opération '='

"Illegal mix of collations (latin5_turkish_ci,IMPLICIT) 
and (latin1_swedish_ci,COERCIBLE) 
for operation '='" problem? 

Ma requête: select * from up where name='camış'

options de connexion:

SET NAMES 'latin5' 
SET character_set_connection = 'latin5' 
SET collation_connection = latin5_turkish_ci 

- J'ai changé l'assemblage en latin5_turkish_ci mais cela ne fonctionne pas. Entre, après quelques minutes (beaucoup de requêtes), le problème disparaît tout seul.

+3

Quelle est la signification de camış? –

Répondre

0

Cette plutôt mauvaise idée, mais devrait fonctionner:

SELECT * 
    FROM up 
WHERE CONVERT(name USING latin5) COLLATE latin5_turkish_ci = 'camış' 

Bonne idée est de convertir toutes vos colonne jeu de caractères de (et cela devrait être UTF-8). [+] En convertissant, je veux dire ne pas changer le classement par défaut de la table/colonne, mais convertir toutes les données qui s'y trouvent. Donc, je voudrais créer une nouvelle colonne avec le jeu de caractères cible, peupler avec UPDATE table SET new_column = CONVERT(old_column USING characterset), abandonner l'ancienne colonne et renommer un nouveau.

+0

Merci. J'ai compris. Mais j'ai déjà changé le jeu de caractères pour la table avec alter table. Y a-t-il une autre instruction mysql pour ça? – wonnie

+0

Voir ma réponse mise à jour qui pourrait être une solution –