从pickle数据加载会导致数据库错误以及新的保存

时间:2010-05-12 19:17:42

标签: django postgresql django-models pickle

为了节省移动数据的时间,我挑选了一些模型并将它们转储到文件中。然后我使用相同的模型将它们重新加载到另一个数据库中。保存工作正常,对象保留了他们原来的id,这就是我想要的。但是,在保存新对象时,我遇到了nextval错误。

不熟悉postgres,我不知道如何解决这个问题,因此我可以使用现有ID保留旧记录,同时能够继续添加新数据。

谢谢, 托马斯

2 个答案:

答案 0 :(得分:3)

实际上有一个django命令打印出名为sqlsequencereset的序列重置SQL。

$ 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;

答案 1 :(得分:2)

我认为你在谈论用于自动增加你的id字段的序列。

这里最简单的解决方案是在“psql”shell中:

select max(id)+1 from YOURAPP_YOURMODEL;

并使用此命令中的值:

alter sequence YOURAPP_YOURMODEL_id_seq restart with MAX_ID_FROM_PREV_STATEMENT;

应该这样做。