Тред #1772749221943903

⭕️ 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 или что-то вроде. Нет, дело не в этом.

  • У меня нет репликации или чего-то такого: дело точно не в рассинхроне мастера с репликой для чтения. В моём случае СУБД одна.

(Мне всё равно никто не ответит, но когда найду причину - напишу, в чём я был неправ)

Ответы:
>>1772749832497753

⭕️ Anonymous 05.03.2026 22:30 #1772749832497753

post media
>>1772749221943903

А если отладить код чуть глубже, то выяснится: я подозревал совершенно не то место в коде, где на самом деле была ошибка. Лол.

И это прекрасно, ибо я уже начал ловить шизу.