Загрузка из выбранных данных приводит к ошибке базы данных с новыми сохранениями - PullRequest
1 голос
/ 12 мая 2010

Чтобы сэкономить время на перемещение данных, я выбрал некоторые модели и поместил их в файл. Затем я перезагрузил их в другую базу данных, используя ту же самую модель. Сохранение работало нормально, и объекты сохранили свой старый идентификатор, что я и хотел. Однако при сохранении новых объектов я сталкиваюсь с ошибками nextval.

Не очень хорошо разбираясь в postgres, я не уверен, как это исправить, чтобы сохранить старые записи с их существующим идентификатором, при этом продолжая добавлять новые данные.

Спасибо, Томас

Ответы [ 2 ]

3 голосов
/ 13 мая 2010

На самом деле есть команда django, которая печатает SQL сброса последовательности, который называется sqlsequencereset .

$ python manage.py sqlsequencereset issues
BEGIN;
SELECT setval('"issues_project_id_seq"', coalesce(max("id"), 1), max("id") IS NOT null) FROM "issues_project";
COMMIT;
2 голосов
/ 12 мая 2010

Я думаю, что вы говорите о последовательности, которая используется для автоинкрементации ваших полей идентификатора.

самое простое решение здесь - оболочка "psql":

select max(id)+1 from YOURAPP_YOURMODEL;

и используйте значение в этой команде:

alter sequence YOURAPP_YOURMODEL_id_seq restart with MAX_ID_FROM_PREV_STATEMENT;

это должно сработать.

...