143 votes

Mélange illégal de collations Erreur MySQL

Je reçois cette étrange erreur lors du traitement d'un grand nombre de données...

Error Number: 1267

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

SELECT COUNT(*) as num from keywords WHERE campaignId='12' AND LCASE(keyword)='hello again  ã‹ ã‚ å ´'

Que puis-je faire pour résoudre ce problème ? Puis-je échapper à la chaîne d'une manière ou d'une autre afin que cette erreur ne se produise pas, ou dois-je changer l'encodage de ma table d'une manière ou d'une autre, et si oui, en quoi dois-je la changer ?

318voto

Ben Hughes Points 8238
SET collation_connection = 'utf8_general_ci';

puis pour vos bases de données

ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

MySQL s'y faufile parfois sans raison valable.

19voto

Binaya Shrestha Points 326
CONVERT(column1 USING utf8)

Résout mon problème. Où colonne1 est la colonne qui me donne cette erreur.

15voto

Quassnoi Points 191041

Vous devez définir à la fois l'encodage de votre table et l'encodage de la connexion UTF-8

ALTER TABLE keywords CHARACTER SET UTF8; -- run once

et

SET NAMES 'UTF8';
SET CHARACTER SET 'UTF8';

4voto

vpgodara Points 161

Utiliser l'instruction suivante pour les erreurs

faites attention à ce que vos données soient sauvegardées si elles sont dans le tableau.

 ALTER TABLE your_table_name CONVERTIR EN JEU DE CARACTÈRES utf8 COLLATE utf8_general_ci ;

2voto

AGK Points 4929

J'ai fait créer ma table à l'origine avec CHARSET=latin1. Après la conversion de la table en utf8, certaines colonnes n'ont pas été converties, mais cela n'était pas vraiment évident. Vous pouvez essayer d'exécuter SHOW CREATE TABLE my_table; et voir quelle colonne n'a pas été convertie ou tout simplement corriger un jeu de caractères incorrect sur la colonne problématique avec la requête ci-dessous (modifier la longueur de varchar et CHARSET et COLLATIONNER selon vos besoins) :

 ALTER TABLE `my_table` CHANGE `my_column` `my_column` VARCHAR(10) CHARSET utf8 
 COLLATE utf8_general_ci NULL;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X