Size: a a a

Saint P Ruby Community

2021 April 15

RR

Ruslan Ryabov in Saint P Ruby Community
кстати, а в самой БД никаких триггеров нету? может это вообще на стороне БД прикол
источник

ZN

Zamira Norova in Saint P Ruby Community
Нет, намеренно логику в СУБД не пихают
источник

PP

Pavel Peganov in Saint P Ruby Community
(Просто примечание, потому что если это заблуждение, то оно опасно: роллбэкается не коммит, а транзакция, т. е. все команды после begin transaction или после последнего commit/rollback, исключая команды которые транзакционно не изолируются вроде модификаций схемы в MySQL; если же сделан коммит, то роллбэкать уже поздно)
(Исключение: двухфазный коммит, но это редко используемая штука)
источник

PP

Pavel Peganov in Saint P Ruby Community
Но возвращаясь к исходной проблеме, у меня есть одно объяснение, которое сходится с наблюдаемым: что-то быстренько убивает запись уже после коммита. Джоба, например.
В after_commit объект ещё будет заполнен, но если сделать .reload, бабахнет.
Поэтому записи в логах об этом может не быть. Если это сделал другой процесс. И, соответственно, запись об этом в другом логе.
источник

f🤔

focusshifter 🤔 in Saint P Ruby Community
кажется, достаточно будет general_log (или аналог) включить на стороне базы
источник

DS

David Salamau in Saint P Ruby Community
а ID у записи каждый раз разный возвращается?
источник

PP

Pavel Peganov in Saint P Ruby Community
(Если нет, пинганите меня, я с вами за компанию поофигеваю)
источник

PP

Pavel Peganov in Saint P Ruby Community
Ладно, а если серьёзно, как такое может случиться (назначение одинаковых ID)? Если не назначать айдишники самостоятельно, конечно.
Автоинкременты вроде ж как раз так сделаны, чтобы такого не допускать.
источник

DS

David Salamau in Saint P Ruby Community
"такое" - ID один и тот же ?
источник

DS

David Salamau in Saint P Ruby Community
или наоборот
источник

PP

Pavel Peganov in Saint P Ruby Community
Да, чтоб один и тот же.
источник

NB

Nikita Bulai in Saint P Ruby Community
Это описка, да :) спасибо за уточнение, чтобы других не туманить
источник

AG

Alexander G in Saint P Ruby Community
Ещё вариант - чтение/запись в разные базы
источник

AG

Alexander G in Saint P Ruby Community
Но это так, просто поддержать разговор и погадать)
источник

AG

Alexander G in Saint P Ruby Community
И ещё мэйби старый забытый default scope
источник

f🤔

focusshifter 🤔 in Saint P Ruby Community
Генерация на стороне клиента :)
источник

DS

David Salamau in Saint P Ruby Community
да, все верно, но как я понял случай нетривиальный и я вместе со всеми участвую в гадании, чтобы получить полную картину
источник

DS

David Salamau in Saint P Ruby Community
кстати, похожая штука вот здесь, как мне кажется
источник

DS

David Salamau in Saint P Ruby Community
источник

ZN

Zamira Norova in Saint P Ruby Community
Базу перезалила, контейнеры пересоздала. Работает. Причина неизвестна. Кажется СУБД погнала
источник