Mysql
 sql >> Base de données >  >> RDS >> Mysql

normalisation des caractères accentués dans les requêtes MySQL

La raison de l'erreur n'est pas la table mais le jeu de caractères de votre entrée, c'est-à-dire le 'rené' dans votre requête. Le comportement dépend de character_set_connection variables :

À l'aide du client MySQL, modifiez-le en utilisant SET NAMES :

SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;

(depuis http://dev.mysql.com/doc /refman/5.5/en/charset-connection.html )

Exemple de sortie :

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = 'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Alternativement, l'utilisation peut définir explicitement le jeu de caractères à l'aide d'un 'introducteur de jeu de caractères' :

mysql> set names latin1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from User where username = _utf8'rené' collate utf8_general_ci;
Empty set (0.00 sec)

Je sais que cette question est assez ancienne, mais puisque Google m'a amené ici pour une question connexe, je pense qu'elle mérite toujours une réponse :)