Мои веб-приложения Django регулярно выдают ошибки SQL в таблицах M2M.
Каждый раз, когда выясняется, что последовательность идентификаторов сбрасывается до значения в пределах диапазона существующих строк.
Приложение выполняет обычные запросы SQL, такие как:
INSERT INTO "myapp_project" ("name") VALUES ('test1') RETURNING "myapp_project"."id"'
которые вызывают такие ошибки, как:
IntegrityError: duplicate key value violates unique constraint "myapp_project_pkey"
DETAIL: Key (id)=(29) already exists.
Затем оказывается, что myapp_project_id_seq
указывает на старый идентификационный номер:
select currval('myapp_project_id_seq')
29
Который затем можно сбросить, используя:
select setval('myapp_project_id_seq', (select max(id) from myapp_project))
Однако я не могу объяснить, почему это происходит. Обычно это происходит на таблицах M2M в Django. В данном случае это обычная таблица с доступом только для администратора. Может ли кто-нибудь просветить меня по этому поводу?