为了节省移动数据的时间,我挑选了一些模型并将它们转储到文件中。然后我使用相同的模型将它们重新加载到另一个数据库中。保存工作正常,对象保留了我想要的旧 ID。但是,在保存新对象时,我遇到了 nextval 错误。
不太擅长 postgres,我不知道如何解决这个问题,这样我就可以用他们现有的 ID 保留旧记录,同时能够继续添加新数据。
谢谢,托马斯
为了节省移动数据的时间,我挑选了一些模型并将它们转储到文件中。然后我使用相同的模型将它们重新加载到另一个数据库中。保存工作正常,对象保留了我想要的旧 ID。但是,在保存新对象时,我遇到了 nextval 错误。
不太擅长 postgres,我不知道如何解决这个问题,这样我就可以用他们现有的 ID 保留旧记录,同时能够继续添加新数据。
谢谢,托马斯
实际上有一个 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;
我认为您正在谈论用于自动增加 id 字段的序列。
这里最简单的解决方案是在“psql”外壳中:
select max(id)+1 from YOURAPP_YOURMODEL;
并使用此命令中的值:
alter sequence YOURAPP_YOURMODEL_id_seq restart with MAX_ID_FROM_PREV_STATEMENT;
这应该够了吧。