当前位置: 首页 > 知识库问答 >
问题:

IntegrityError:重复键值违反了唯一约束

阴福
2023-03-14

我在django应用程序中创建了一个模型,并从pgadmin将数据填充到表中,但现在当我试图从应用程序创建记录时,它抛出了这个完整性错误:

重复的键值违反了唯一约束“packsapp_foo_pkey”

详细信息:键(id)=(4)已经存在。

这是models.py

class foo(models.Model):
    a = models.CharField(max_length=500, default=0)
    b = models.EmailField(max_length=500, default=0)
    c = models.CharField(max_length=500, default=0)
    d = models.CharField(max_length=500, default=0)

我是否总是必须从应用程序本身插入数据?

Views.py

class ProductFormView(CreateView):
    model = Product
    form_class = Productaddform

    template_name = 'packsapp/employee/employeeProductForm.html'

    def form_valid (self, form):
        product = form.save(commit=False)
        print("user ", self.request.user.id)
        product.product_owner = Employee.objects.filter(user = self.request.user.id)[0]
        product.save()
        messages.success(self.request, 'The product was created with success! ')
        return redirect('employee:products_table')

共有1个答案

纪鸿禧
2023-03-14

同意布鲁诺的评论,你的主键序列不同步。要解决此问题,请在PG控制台中运行以下命令:

SELECT setval(pg_get_serial_sequence('packsapp_foo', 'id'), max("id")) FROM "packsapp_foo";

要在数据库中手动输入值,请确保调用<code>nextval(

INSERT INTO packsapp_foo
  (id, a, b, c, d)
VALUES
  (next_val(pg_get_serial_sequence('packsapp_foo', 'id')), ...);

这同样适用于表列上可能存在的任何其他序列。有关更新序列,请参阅Postgres Docs

 类似资料:
  • 我有一个Django模型,其定义类似于以下内容: 起初,约束并不存在;我刚刚添加了它,并运行了。这导致了以下迁移(): 然而,当我尝试< code > python manage . py migrate 时,我得到以下错误: django.db.utils.Integrity错误:重复的键值违反了唯一约束“django_migrations_pkey”详细信息:键 (id)=(326) 已存在。

  • 遇到了一点问题,当我运行''时,我收到了上述错误消息,我正在一个相当旧的站点上工作。它'运行带有postgres DB的django 1.2.6。 运行没有安装南,我设法让它工作。运行pythonmanage.py模式迁移-初始contact_enquiries运行良好并要求我迁移。然后我运行pythonmanage.py迁移contact_enquiries然后我得到了与上述相同的错误。 它没有

  • 问题内容: 我正在跟着我先前提出的一个问题,在这个问题中,我试图寻求从愚蠢/编写不佳的mysql查询到postgresql的转换。我相信我成功了。无论如何,我正在使用从mysql数据库手动移动到postgres数据库的数据。我正在使用如下查询: 我有理由相信这很好。但是,这导致了新问题。尝试提交时,我从django收到一条错误,指出: 我已经看过这里发布的一些回复,但是我还没有找到解决我的问题的方

  • 我必须交换同一表的不同行的属性。 有一列“reference_id”在 DB 中具有唯一的约束。 代码: A 级- B级- 异常跟踪:

  • 我有一个笑话模型: 现在,当我试图迁移最后一行时,我得到了错误。基本上,我想将一个用户链接到Joke对象,因为我已经有了一个数据库,所以我希望默认值为1,这是管理员用户的id(我检查过了...).Makemigrations工作正常,但是当我尝试迁移时,我得到了这个: 我真的不明白怎么了。有什么想法吗?