Lý do cho lỗi không phải là bảng mà là tập ký tự của đầu vào của bạn, tức là 'rené' trong truy vấn của bạn. Hành vi phụ thuộc vào character_set_connection biến:
Sử dụng MySQL Client, thay đổi nó bằng cách sử dụng SET NAMES
:
SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;
(từ http://dev.mysql.com/doc /refman/5.5/en/charset-connection.html )
Ví dụ đầu ra:
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)
Ngoài ra, việc sử dụng có thể đặt bộ ký tự một cách rõ ràng bằng cách sử dụng 'người giới thiệu bộ ký tự':
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)
Tôi biết câu hỏi này khá cũ nhưng vì Google đã dẫn tôi đến đây cho một câu hỏi liên quan, tôi mặc dù nó vẫn xứng đáng có câu trả lời :)