|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
Значит вот так я создаю таблицы: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Потом вставляю в таблицу `messages` (не вставляя ничего в таблицу `private_dialogs`: Код: sql 1. 2. 3. 4. 5.
И вот, после последнего запроса(который с ошибкой) выполнить: Код: sql 1.
То пропускается автоинкрементное значение, ну т.е. если предыдущая успешно вставленная запись была с идентификатором 4, то запись вставленная успешным запросом после неуспешного будет иметь идентификатор 6. А записи с идентификатором 5 не будет. И как это понимать? Баг или я неправильно вставляю записи? Или же ошибка в структуре таблиц? Версия MySQL: 5.7.30-0ubuntu0.18.04.1-log ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 17:53 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
что покажет Код: sql 1.
и версия сервера какая ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 18:29 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
Alex_Ustinov, mysql> SHOW VARIABLES LIKE "%auto_increment%"; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.01 sec) mysql> Но это до выполнения неудачного запроса, уже после того как был выполнен удачный. После выполнения неудачного запроса вывод точно такой же, перед выполнением SHOW VARIABLES я переключился на мою базу данных. А версию сервера как узнать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 19:07 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
davidblbulyan, Это не баг, это штатное поведение MySQL. Значения для автоинкремента генерятся даже в том случае, если INSERT падает с ошибкой, но не используются. Частично описано тут - https://dev.mysql.com/doc/refman/8.0/en/innodb-auto-increment-handling.html ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 19:11 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
ну так то да, я подумал что после 2-х успешных 3-й неуспешный и автоинкр сразу = 6 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 20:08 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
davidblbulyan, А версию сервера как узнать? Код: sql 1.
вы указали я пропустил - 5.7.30 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 20:24 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
Автоинкремент гарантирует что: 1) Однажды сгенерированное значение больше не будет сгенерировано. 2) Значение, сгенерированное позже, всегда больше значения, сгенерированного раньше. Всё. Больше ничего не гарантируется. В том числе и непрерывность генерируемых значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 20:26 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
miksoft, Да, в документации такое действительно описано, но зачем оно нужно? Или же почему оно так? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 22:46 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
Иногда вставка записи не проходит. Из-за ошибки запрос не выполняется - но значение было выделено. Из-за дублирования выполнение свернёт на ON DUPLICATE KEY UPDATE - но значение было выделено. А однажды сгенерированное значение больше не генерируется - даже если оно заведомо не было использовано по назначению. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:44 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
davidblbulyan, автоинкремент должен быть уникальным и это все, что от него требуется в таблице. ну а так - просто алгоритм такой при инсерте взяли номерок в очереди и работаем с ним. Ничего не блокируем кто то в это время может взять следующий, тоже не блокирует. У нас ничего не получилось - куда мы вернем номерок? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2020, 23:58 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
Alex_Ustinov У нас ничего не получилось - куда мы вернем номерок? - Я скачал файл, но он мне не нужен - как закачать его обратно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 00:08 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
Akina, выкинуть, как и номерок ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 00:10 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
davidblbulyan Или же почему оно так? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 00:37 |
|
Кажется я нашёл баг в MySQL или я что-то не так делаю? Пропуск автоинкрементного значения
|
|||
---|---|---|---|
#18+
там же любимaя запись Си Пре-инкремент Inc++ Переменная в памяти Взяли переменную для дела прибавили 1, и не задерживаем, другие использовать могут а иначе бардак с переменной AutoInc ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2020, 21:30 |
|
|
start [/forum/topic.php?fid=47&fpage=21&tid=1828551]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 173ms |
0 / 0 |