【问题标题】:Loading from pickled data causes database error with new saves从腌制数据加载会导致新保存的数据库错误
【发布时间】:2010-05-12 19:17:42
【问题描述】:

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

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

谢谢, 托马斯

【问题讨论】:

    标签: django postgresql django-models pickle


    【解决方案1】:

    实际上有一个 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;
    

    【讨论】:

      【解决方案2】:

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

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

      select max(id)+1 from YOURAPP_YOURMODEL;
      

      并使用此命令中的值:

      alter sequence YOURAPP_YOURMODEL_id_seq restart with MAX_ID_FROM_PREV_STATEMENT;
      

      这应该可以解决问题。

      【讨论】:

        猜你喜欢
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-26
        • 1970-01-01
        • 2015-10-06
        相关资源
        最近更新 更多