Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 手动添加数据会导致IntegrityError_Django_Django Models - Fatal编程技术网

Django 手动添加数据会导致IntegrityError

Django 手动添加数据会导致IntegrityError,django,django-models,Django,Django Models,我有两个Django网站:一个用于开发,一个用于生产。每隔一段时间,需要将开发数据库中的数据传输到生产数据库或其他方式。我使用postgresql 这很好:我从要复制到的数据库中清空表,从适用的表生成sql,然后将数据插入清空的表中。到目前为止,一切顺利 但当我通过管理界面将数据输入数据库时,Django会引发IntegrityErrors,因为appname\u modelname\u pkey已经存在 我认为这是因为管理接口想要添加id为1的数据,但这已经是一条导入的记录。Django不知道

我有两个Django网站:一个用于开发,一个用于生产。每隔一段时间,需要将开发数据库中的数据传输到生产数据库或其他方式。我使用postgresql

这很好:我从要复制到的数据库中清空表,从适用的表生成sql,然后将数据插入清空的表中。到目前为止,一切顺利

但当我通过管理界面将数据输入数据库时,Django会引发IntegrityErrors,因为appname\u modelname\u pkey已经存在

我认为这是因为管理接口想要添加id为1的数据,但这已经是一条导入的记录。Django不知道id“1”已被占用

如何解决此问题?我希望Django增加id(就像SQL auto_increment一样),不管已经存储了什么数据


感谢您的帮助

如果两边都使用postgres,那么与主键相关联的顺序将不同

例如,假设您正在将生产数据移动到开发中。同样,假设生产中的序列值为20,开发中的序列值为10。然后,在development中添加的第一个新项的id为11。该id(可能)已经存在于生产数据中,因此会出现完整性错误

从转储还原表时,可以通过在还原之前删除并重新创建现有表来重置序列


(或者,您可能可以使用该命令同步序列。但是,我对postgres还不太熟悉,无法说明这样做是否正确。)

当您说“每隔一段时间,开发数据库中的数据需要传输到生产数据库或其他方式”时,您有点含糊不清,确切地说,数据是否正在传输,以及它与表中已有数据的关系如何?在我大约3年前做的一个项目中,我们在开发中掌握了一些表,并在更新时清除/重写了这些表(例如文章),还有一些表(例如会话),它们在生产中掌握,在更新过程中从未接触过。嗨,Peter。我希望将数据(不是结构,已经是相同的)从一些表从一个数据库传输到另一个数据库。你说得对:并不是所有的表都被传输(例如,会话不是)。这很有效,非常感谢!我使用了PhpPgAdmin并修改了“序列”(db->public->sequences)。