⭕️ Anonymous 05.03.2026 22:20 #1772749221943903
Mysql 8.0.32
После вставки в таблицу с колонкой id AUTO_INCREMENT PRIMARY KEY строки и извлечения last_insert_id строку невозможно получить следующим запросом по данному id. Строка при этом в таблице присутствует, а last_insert_id указывает на верный идентификатор.
Почему так может быть?
После вставки строки она есть в таблице под айди 2207. То есть она точно есть в таблице после выполнения моего кода с запросами к СУБД, всегда доступна по айди 2207.
Если запустить код, который: сохраняет строку в таблицу БД с айди 2207, извлекает внутри данной транзакции last_insert_id == 2207, завершает транзакцию и коммитит изменения, затем в другой свежей транзакции пытается извлечь строку из таблицы по айди == 2207; если запустить такой код в режиме отладки - то идентификатор сходится, но данные всё равно не возвращаются.
Грешным делом я пробовал добавить
sleep(1)после каждой вставки строки и перед попыткой извлечения - думал, может упираюсь в I/O или что-то вроде. Нет, дело не в этом.У меня нет репликации или чего-то такого: дело точно не в рассинхроне мастера с репликой для чтения. В моём случае СУБД одна.
(Мне всё равно никто не ответит, но когда найду причину - напишу, в чём я был неправ)