[support] User ID in users table

Michael Prasuhn mike at mikeyp.net
Sat Dec 1 02:44:28 UTC 2012


No. If if was just using SELECT MAX(uid) FROM {users} then it wouldn't have gaps like the OP was experiencing.

Note that the result from that query is actually fed to db_next_id() which in turn uses a DBMS specific method to ensure unique IDs. (In MySQL this means using an insert query into a table that is set to auto increment and then reading the ID of the inserted record. This cannot produce duplicate keys. see http://api.drupal.org/api/drupal/includes%21database%21mysql%21database.inc/function/DatabaseConnection_mysql%3A%3AnextId/7 )

-Mike
__________________
Michael Prasuhn
http://mikeyp.net

On Nov 30, 2012, at 5:42 AM, Earnie Boyd <earnie at users.sourceforge.net> wrote:

> On Fri, Nov 30, 2012 at 8:32 AM, Jamie Holly wrote:
>> This isn't the case in D7.  UID is assigned by a SELECT MAX(uid) FROM
>> {users}. Check user.module line 571.
> 
> Unless the whole users table is locked then this is guaranteed to fail
> under heavy use.  Some poor user is going to get a DB error of
> duplicate key.  The chances may be small but there is a chance it will
> happen.  Do you know the issue # that caused this to happen?
> 
> -- 
> Earnie
> -- https://sites.google.com/site/earnieboyd
> -- 
> [ Drupal support list | http://lists.drupal.org/ ]



More information about the support mailing list