It should be a collation issue.

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

mysql> select 'm n'='men';
+--------------+
| 'm n'='men' |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

You might want to use the SELECT BINARY operator:

mysql> select binary 'm n'='men';
+---------------------+
| binary 'm n'='men' |
+---------------------+
|                   0 |
+---------------------+
1 row in set (0.00 sec)

Or set the default collation for the table in question.

With utf8_general_ci, which transliterates non-ascii characters:

mysql> create table test (a varchar(8), b varchar(8)) character set
utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.07 sec)

mysql> insert into test values (' ', 'e');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where a=b;
+------+------+
| a    | b    |
+------+------+
|     | e    |
+------+------+
1 row in set (0.00 sec)

With binary collation:

mysql> alter table test character set utf8 collate utf8_bin;
Query OK, 0 rows affected (0.09 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> insert into test values (' ', 'e');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where a=b;
Empty set (0.00 sec)

Or set binary collation only for the filed which will contain unicode
chars:

mysql> create table test (a varchar(8) collate utf8_bin, b varchar(8))
character set utf8 collate utf8_general_ci;
Query OK, 0 rows affected (0.08 sec)

mysql> insert into test values (' ', 'e');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test where a=b;
Empty set (0.00 sec)

You can find the manual pages for MySQL collations and related issues
here

http://dev.mysql.com/doc/refman/4.1/en/charset-collations.html

Ludo


On Aug 22, 12:28 pm, mezhaka <[EMAIL PROTECTED]> wrote:
> Hi djangers!
>
> I've accidentally bumped into an IntegrityError problem as I added
> unique_together = (("word", "language"),)
> to my Keyword class.
> Debugging the problem I was surprised to discover the following
> behavior in MySQL shell:
>
> mysql> select 'm n'='man';
> +--------------+
> | 'm n'='man'  |
> +--------------+
> |            1 |
> +--------------+
>
> So it seems like MySQL cannot tell the difference between those m n
> and man?! That sounds weird. It might be some MySQL options I need to
> set.
> Can anyone point me to some docs were I can dig for the answer? Or
> just had the same issue?


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to