gpt4 book ai didi

python - Django Import-Export Import Duplicate key value violates 错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:01:33 25 4
gpt4 key购买 nike

我正在开发一个以 Django 1.10、Python 3.6 和 PostgreSQL 作为数据库后端的项目,其中我有一个名为“文章”的模型,我需要从 CSV 文件导入数据。我已经导入了我的第一个 CSV 文件成功使用以下字段:ID、链接和类别它的 ID 字段从 1 到 1960然后在下一个文件中,我从 1961 年开始开始 ID 字段,但它显示以下错误:

Line number: 1961 - duplicate key value violates unique constraint "article_article_pkey" DETAIL: Key (id)=(1961) already exists.

即使我在 Django 管理中看到我的文章模型,它也会显示 1-1960 的 ID

这是我的 models.py:

class Article(models.Model):
id = models.AutoField(primary_key=True)
link = models.URLField(max_length=255)
category = models.CharField(max_length=255, choices=Categories)

这里是admin.py

@admin.register(Article)
class ArticleAdmin(ImportExportModelAdmin):
resource_class = views.ArticleResource
readonly_fields = ('id',)

最佳答案

我已经触发了问题所在:实际上,问题是 PostgreSQL 主键顺序不与表行同步。这就是为什么当我插入新行时出现重复键错误,因为串行数据类型中隐含的序列返回一个已经存在的数字。

为了解决这个问题,我们必须重新设置 PostgreSQL 的 ID 顺序,这是分步指南:

  1. 登录到数据库外壳并连接到您的数据库
  2. 首先,检查表中 id 列的最大值 SELECT MAX(id) FROM your_table;
  3. 然后,检查 ID 的下一个值是什么:SELECT nextval('your_table_id_seq');
  4. 如果 nextval 是 Max 值的下一个数字,那么它是正确的。 例如 MAX=10 & nextval=11
  5. 否则将表的 id_seq 重置为:

    开始;

    -- 在更新计数器时防止并发插入

    以独占模式锁定表 your_table;

    -- 更新序列

    SELECT setval('your_table_id_seq', COALESCE((SELECT MAX(id)+1 FROM your_table), 1), false);

    提交;

关于python - Django Import-Export Import Duplicate key value violates 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46824027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com