[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Стал свидетелем сбоя автоинкремента!
GET
Привет.

mysql 5.5 INNODB

Только что на глазах увидел как вновь вставленная строка встала в id c номером предыдущей строки удаленной за пару минут до этого! id PRIMATY AUTO_INCREMENT.

Как это объяснить не знаю даже.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
AlmazDelDiablo
Свернутый текст
Проделки Сатаны сие есть!


_____________
Блог | VK | GitHub | Twitch
GET
Цитата
Свернутый текст
Проделки Сатаны сие есть!

Смех смехом, а не знаю что и думать. Из-за чего такое могло произойти??? Как теперь верить???

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Invis1ble
дамп структуры таблицы в студию, для начала

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

GET
CREATE TABLE IF NOT EXISTS `tab` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`id1` int(11) unsigned NOT NULL DEFAULT '0',
`id2` int(11) unsigned NOT NULL DEFAULT '0',
`t1` int(11) unsigned NOT NULL DEFAULT '0',
`t2` int(11) unsigned NOT NULL DEFAULT '0',
`t3` int(11) unsigned NOT NULL DEFAULT '0',
`p` int(10) unsigned DEFAULT '0',
PRIMARY KEY (`id`),
KEY `b` (`id2`,`t1`,`t2`,`p`),
KEY `p` (`id2`,`p`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;


да обычная таблица

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
GET
Создал строку ей присвоился 14 id, вместе с ней создалась директория с тем же названием 14...спустя какое то время удалил строку, но забыл удалить директорию. Стал создавать новую строку, вылезла ошибка что такой каталог уже существует!

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
Неплохо бы именно последовательность действий, включая сами запросы. Мб там какой-то оптимайз запускался после дилита или еще что. Лучше всего было бы, если это можно было повторить у себя по описанию.
inpost
ABC
Тот же trancate очищает и обнуляет auto-increment. Repair может быть и optimize.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
GET
Цитата
Repair может быть и optimize.


но ведь они-то не должны счетчик сбрасывать??? trancate понятно...но тут, как объяснить. Думаю, что связано с транзакциями.

Сколько не пробывал не удалось получить второй раз так.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
Цитата (ABC @ 5.06.2014 - 23:44)
Думаю, что связано с транзакциями.

Если запись была вставлена и удалена в одной транзакции, то мб счетчик не увеличивается? Ну и если транзакция не была завершена была, тогда все еще проще
GET
Цитата
Если запись была вставлена и удалена в одной транзакции, то мб счетчик не увеличивается? Ну и если транзакция не была завершена была, тогда все еще проще


ну ведь даже если строка вставилась с транзакцией, а потом во время этой же транзакции операции отменили, то счетчик все равно изменится. Вот тут непонятно.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Invis1ble
без воспроизводимого кейса это гадания на кофейной гуще

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

GET
Короче был не до конца уверен стал еще тестить обнаружил причина в этом:

https://dev.mysql.com/doc/refman/5.0/en/inn...t-handling.html

У InnoDB есть свойство - при рестарте MySQL автоинкремент устанавливается в MAX(id)+1

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.