[dev] Case insensitive unique key, was: [horde] Error when updating DB scheme for kronolith
Chuck Hagenbuch
chuck at horde.org
Sun Apr 24 04:06:36 UTC 2011
Quoting Jan Schneider <jan at horde.org>:
> Zitat von MarkatOSI <buy at mark.net>:
>
>> Problem solved. I found a similar situation described in another posting
>>
>> "I'm having the same issue :
>> SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
>> 'Nmaurice' for key 'rampage_users_user_name'
>>
>> But over here nmaurice is a user and in our case, I'm guessing that
>> this user usually logs in as 'nmaurice', and logged in at least once
>> as 'Nmaurice'.
>>
>> After running the following query, the migrate script was happy.
>> mysql> update kronolith_events set event_creator_id=lower(event_creator_id);
>
> The core problem is that we have a unique key on
> rampage_users.user_name. Whether this key is case sensitive or not
> depends on the table's/database's collation in MySQL. By default any
> indexes are case insensitive. This breaks because Horde itself is
> case sensitive.
> The options that I see are:
> - normalize usernames in Content (not good because it would make
> Horde case insenstive in a single place)
> - enforce collation during table creation (not portable, not sure if
> possible, you can't just pick cs vs ci but also have to pick a
> locale for the collation)
> - make this a regular key an ensure uniqueness in userland code (not
> as elegant)
> - ???
What about making Horde usernames case insensitive everywhere?
I know that we have made a policy of not mucking with usernames, but
does anyone actually use case sensitivity to make joe and Joe
different accounts? It seems to cause a lot of confusion for people,
as well as posing problems like this one.
-chuck
More information about the dev
mailing list