У БД стоит автоинкремент первичного ключа Всё было хорошо до тех пор, как я не начал удалять старые записи. Счётчик автоинкремента пошёл дальше и получилось как на скриншоте.. Можно ли как то это поправить?Пользуюсь phpmyadmin Было бы неплохо и для моего будущего SQL запроса на php найти ответ..
@ADSoft, судя по недавней теме, ТС сам пытается формировать id --- Добавлено --- @Qeuvec, не пытайтесь формировать id самостоятельно, доверьтесь мускулу. Да, разрывы будут в результате удаления. Но по крайней мере не будет неожиданных блокировок в результате смешения методов. --- Добавлено --- Или по крайней мере возьмите за правило не формировать самостоятельно id, равные или большие тек. значения автоинкрементального счетчика
В принципе ничего не мешает убрать автоинкремент (см. alter table ...) или пересоздать таблицу без автоинкремента
Так нет же. Я его просто МОГУ сам вставлять, но не делаю этого обычно. Но так как сейчас после 5 ID идёт 26, то это эстетически некрасиво.. а на их последовательность в таблице мне всё равно, так как в новостной ленте они упорядочиваются по дате. Поэтому хотелось бы, чтобы автоматом заполнялось пустующее место. Но, видимо в phpmyadmin такого не настроить, и, лучше просто написать какой-то код php на перебор IDшников?
Это норм. Если id используются исключительно для внутренних нужд, то на эстетику плевать. А если где-то и внешне проявляются, например в адресах, то они должны оставаться фиксированными, чтобы не возникало некорректных адресов, не происходило нерелевантных ответов на запросы по адресам и т.п. Когда у вас будут миллиарды записей, тогда и будете задумываться об «уплотнении рядов», повторном использовании незадействованных id (на месте удаленных записей) и т.п. Хотя, как я написал выше, повторно использовать можно уже сейчас, особенно если id удаленных записей не были где-то засвечены. Но это уже скорее ручной труд. Даже более вменяемые админки этим обычно не занимаются. О phpMyAdmin и говорить нечего. --- Добавлено --- Вы можете изменить автоинкрементальный счетчик на id последней записи плюс 1. Если уверены, что во время этой манипуляции не создаются записи. --- Добавлено --- Но если у вас есть 5 и 26, а вы установите счетчик в 6, то при достижении им значения 26 у вас возникнут проблемы --- Добавлено --- Поэтому счетчик лучше не трогать и оставить 6-25 незадействованными, либо добавлять записи с этими id, явно указывая их значения (вручную).
Если бы знали что я использую для сервера "OpenServer" Если отсчитывать с последней, то это тот же самый автоинкремент же будет. Думаю просто счётчиком for пройтись по ID. Типо, если следующего элемента нет, то ID равняется ему. Но это когда нибудь потом. Это для "крусовой". мини-сайтик делаю. Но, уже начинаю просто для себя что-то делать
Просто поймите - что автоинекремент - это не счетчик строк в таблице, а именно автоинкремент который увеличивает на единицу при каждой операции, гарантируя уникальность id В практике - я не встречал необходимости "упорядочивания", "эстетичности" и прочей чепухи... Да бывают случаи когда нужно видеть некие номера завязанные на id в удобном для человека виде - но и в этом случае id Не трогают.... создают доп поля с генерацией номера на основе id Есле же в эстетично хотите просто в таблице вывода показывать номер строки - то делайте это на клиенте, не напрягайте БД этой ерундой