Проблема с AUTO_INCREMENT

Тема в разделе "PHP", создана пользователем yeaahhh, 7 дек 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Ребят. Не пойму в чём дело.
    При регистрации, в MYSQL пользователю присваивается id..
    на соответственном поле стоит AUTO_INCREMENT. Но. Иногда, пользователю присваивается id не по порядку.
    Например: 1,2,5,6,7,8,9,12,13 и т.д.
    В чём может быть причина?
    Заранее спасибо!
     
  2. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    Может быть какие-то записи удалены были?
    да, и не помню я , чтобы AUTO_INCREMENT гарантировал непрерывную последовательность
     
  3. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Нет.. Записи удалены не были..
    А можно ли тогда как-то сделать последовательную запись id?
    Приходит на ум только запрос максимального id, прибавление единицы и запись полученного числа в таблицу..
    Может быть ещё есть какие-нибудь варианты?
     
  4. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    AUTO_INCREMENT берет текущее значение "AUTO_INCREMENT" и прибавляет к нему единицу ... всегда ...
    таким образом переменная AUTO_INCREMENT растет последовательно, и соответственно значения айдишников должны увеличиваться последовательной
     
  5. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Вот что-то сбои бывают.. Сам не знаю, почему.. стоит A_I 100%..
     
  6. DenisK

    DenisK

    Регистр.:
    8 фев 2007
    Сообщения:
    205
    Симпатии:
    13
    А если через phpmyadmin добавлять записи, инкремент тоже сбоит?
     
  7. reds

    reds Постоялец

    Регистр.:
    5 янв 2008
    Сообщения:
    54
    Симпатии:
    35
    Глупости это. Он берет не последний ид в базе. А в базе есть специальный счетчик для AUTO_INCREMENT который и подсчитывает.
    В данном случае скорее всего такой вариант были пользователи 1,2,3,4 потом пользователей с ид 3 и 4 удалили. остались только 1 и 2. Потом добавляем следующего и у него будет ид 5.
    См. картинку. (это phpMyAdmin)
    [​IMG]
     
  8. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    есть смутное и очень сомнительное подозрение, что такое может возникать из-за конкурирующих транзакций. Если удаления не было, как утверждает ТС, то это наиболее вероятно
     
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    какие транзакции? ты разберись сначала с типом БД, я на 100% уверен что у него MyISAM а не InnoDB и при чтении/записи блокируется вся таблица целиком, так что ни о каких транзакциях тут не может быть и речи.
     
Статус темы:
Закрыта.