Я недавно создал дамп SQL базы данных за проектом Django, и после очистки SQL немного смог восстановить БД и все данные.Проблема была в том, что все последовательности были испорчены.Я попытался добавить нового пользователя и сгенерировал ошибку Python IntegrityError: duplicate key violates unique constraint
.
Естественно, я решил, что мой дамп SQL не перезапустил последовательность.Но это так:
DROP SEQUENCE "auth_user_id_seq" CASCADE;
CREATE SEQUENCE "auth_user_id_seq" INCREMENT 1 START 446 MAXVALUE 9223372036854775807 MINVALUE 1 CACHE 1;
ALTER TABLE "auth_user_id_seq" OWNER TO "db_user";
Я выяснил, что повторная попытка создания пользователя (или любой новой строки в любой таблице с существующими данными и такой последовательностью) позволила успешно создать объект / строку.Это решило насущную проблему.
Но, учитывая, что последний идентификатор пользователя в этой таблице был 446 - то же самое начальное значение при создании последовательности выше - похоже, что Postgresql просто пытался начать создавать строки с этим ключом.
Предоставляет ли дамп SQL неверный стартовый ключ на 1?Или я должен вызвать другую команду для запуска последовательностей после заданного идентификатора запуска?Очень любопытно.