Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

normalizando caracteres acentuados em consultas MySQL


O motivo do erro não é a tabela, mas o conjunto de caracteres de sua entrada, ou seja, o 'rené' em sua consulta. O comportamento depende do character_set_connection variável:

Usando o MySQL Client, altere-o usando SET NAMES :
SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;

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

Saída de exemplo:
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)

Alternativamente, use pode definir explicitamente o conjunto de caracteres usando um 'introdutor de conjunto de caracteres':
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)

Sei que essa pergunta é bem antiga, mas como o Google me trouxe aqui para uma pergunta relacionada, acho que ainda merece uma resposta :)