Сдвинуть автоинкремент в таблице пользователей

Всем привет. Подскажите как можно сдвинуть автоинкремент в таблице modx_user_attributes?
В базе 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 стоит автоинкремент его просто так не изменить. Сталкивался ли кто с подобным?
Николай Загумённов
24 июня 2015, 11:56
modx.pro
2 163
0
Поблагодарить автора Отправить деньги

Комментарии: 7

Василий Наумкин
24 июня 2015, 15:11
0
У меня только один вопрос — зачем?!
    Василий Столейков
    24 июня 2015, 15:15
    0
    В данной ситуации у меня такой же вопрос — зачем?
    Но есть другие ситуации: например залил 150 тысяч товаров, потом удалил половину из них — в итоге любая новая страница имеет id = 196489 например.
    А если тип сайта такой, что товары регулярно добавляются и со временем очищаются, что будет с id-шками через пару лет, когда дойдёт до миллиона например?
      Василий Наумкин
      24 июня 2015, 15:19
      1
      +1
      Инкремент сбрасывается очень просто — надо зайти в свойства таблицы через PhpMyAdmin и указать нужное число.

      id, по умолчанию — это число INT из 10 цифр длиной, которое может держать до 4 294 967 295. А есть еще BIG INT, там до 18 446 744 073 709 551 615.

      Думаю, должно хватить. Хотите узнать больше?
      Максим
      24 июня 2015, 16:50
      0
      Если таблица MyISAM, то можно сбрасывать запросом:
      ALTER TABLE имя_таблицы AUTO_INCREMENT = 1
      Николай Загумённов
      24 июня 2015, 15:43
      0
      Когда хочу подписать группу на рассылку, в компоненте Sendex, группу пользователя, он мне пишет имя одного, а емайл того, у кого id на один меньше.
      Нельзя ли отключить этот автоинкремент, чтобы проставить правильные id а потом включить? =)
      Николай Загумённов
      24 июня 2015, 16:15
      0
      Нашел!=)
      SET @x:=0; UPDATE modx_et_user_attributes SET id=(@x:=@x+1);
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7