Сдвинуть автоинкремент в таблице пользователей
Всем привет. Подскажите как можно сдвинуть автоинкремент в таблице modx_user_attributes?
В базе Modx каждой строке в таблице modx_et_users соответствует строка в таблице modx_user_attributes. У меня каким-то образом получилось так, что в таблице modx_user_attributes было 2 строки одного пользователя. Одну из них я удалил, но id в этой таблице теперь у меня идут как 1,2,3,5,6… пропущено 4. Как можно поменять у остальных строк ID. Пробую как-то так, то что то не обновляются ID:
В базе Modx каждой строке в таблице modx_et_users соответствует строка в таблице modx_user_attributes. У меня каким-то образом получилось так, что в таблице modx_user_attributes было 2 строки одного пользователя. Одну из них я удалил, но id в этой таблице теперь у меня идут как 1,2,3,5,6… пропущено 4. Как можно поменять у остальных строк ID. Пробую как-то так, то что то не обновляются ID:
$user_obj = $modx->getCollection('modUserProfile');
$id = 0;
foreach ($user_obj as $user) {
echo $user->get('id') . "<br />";
$internalKey = $id + 1;
$user->set('id', $id);
echo "<hr>";
$user->save();
}
У id стоит автоинкремент его просто так не изменить. Сталкивался ли кто с подобным?
Поблагодарить автора
Отправить деньги
Комментарии: 7
У меня только один вопрос — зачем?!
В данной ситуации у меня такой же вопрос — зачем?
Но есть другие ситуации: например залил 150 тысяч товаров, потом удалил половину из них — в итоге любая новая страница имеет id = 196489 например.
А если тип сайта такой, что товары регулярно добавляются и со временем очищаются, что будет с id-шками через пару лет, когда дойдёт до миллиона например?
Но есть другие ситуации: например залил 150 тысяч товаров, потом удалил половину из них — в итоге любая новая страница имеет id = 196489 например.
А если тип сайта такой, что товары регулярно добавляются и со временем очищаются, что будет с id-шками через пару лет, когда дойдёт до миллиона например?
Инкремент сбрасывается очень просто — надо зайти в свойства таблицы через PhpMyAdmin и указать нужное число.
id, по умолчанию — это число INT из 10 цифр длиной, которое может держать до 4 294 967 295. А есть еще BIG INT, там до 18 446 744 073 709 551 615.
Думаю, должно хватить. Хотите узнать больше?
id, по умолчанию — это число INT из 10 цифр длиной, которое может держать до 4 294 967 295. А есть еще BIG INT, там до 18 446 744 073 709 551 615.
Думаю, должно хватить. Хотите узнать больше?
Класс, спасибо!
Если таблица MyISAM, то можно сбрасывать запросом:
ALTER TABLE имя_таблицы AUTO_INCREMENT = 1
Когда хочу подписать группу на рассылку, в компоненте Sendex, группу пользователя, он мне пишет имя одного, а емайл того, у кого id на один меньше.
Нельзя ли отключить этот автоинкремент, чтобы проставить правильные id а потом включить? =)
Нельзя ли отключить этот автоинкремент, чтобы проставить правильные id а потом включить? =)
Нашел!=)
SET @x:=0; UPDATE modx_et_user_attributes SET id=(@x:=@x+1);
SET @x:=0; UPDATE modx_et_user_attributes SET id=(@x:=@x+1);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.