Здравствуйте уважаемые друпаловоды!
Буквально несколько дней назад столкнулся с проблемой (вроде ничего не менял, в модули ядра не лез) что присвоение uid вновь зарегистрированным пользователя ведется неправильно не uid+1, а uid+10+20 и тп, т.е. последний пользователь с uid 20.000 следующий 20200
Вижу что в модуле user.module есть строка 571
$account->uid = db_next_id(db_query('SELECT MAX(uid) FROM {users}')->fetchField());
Похоже она решает какой будет следующий uid, так если я запускаю эту строку в devel php execute, SQL похоже игнориуется и возвращается странный uid, если запущу через минуту то может быть и +5, если сразу запущу выполнение строки сразу два раза один за другим то ставится вроде правильно +1, но не к предыдущей записи uid в БД а тот идентификатор который выводился с помощью db_next_id() в предыдущий запуск.
Кто может сталкивался с этим? Есть какие соображения?
Получилось это спонтанно, работало все правильно и на тебе...
Комментарии
таблица sequences кстати живет своей жизнью, в ней постоянно меняется значение если даже никто не регился новый
sequences использльзуется не только для генерациии uid
http://www.dave-cohen.com/node/1000007
> А что делать то тогда?
По ссылке перейти.
> Так скоро у меня будет миллионная регистрация нового пользователя
Чем это плохо?
Я того же мнения что и автор статьи, хочу последовательные номера uid.
В общем сделал модуль на основе того тутора, все теперь uid отдельно от других модулей считается.
Спасибо за ссылку!