gpt4 book ai didi

Django admin "duplicate key value violates unique constraint"Key (user_id)=(1) 已经存在

转载 作者:行者123 更新时间:2023-11-29 14:20:49 24 4
gpt4 key购买 nike

只有当我尝试通过 django 管理站点更新任何内容时,这才会发生在我身上。否则我没有问题。我得到的错误是:

IntegrityError at /admin/ledger/user/1/
duplicate key value violates unique constraint "ledger_googleprofile_user_id_key"
DETAIL: Key (user_id)=(1) already exists.

这是我的谷歌个人资料模型的样子:

#ledger.models
class GoogleProfile(models.Model):
plus_id = models.CharField(max_length=2000, null=True, blank=True)
info = JSONField(null=True, blank=True)
youtube_info = JSONField(null=True, blank=True)
user = models.ForeignKey('User', related_name='google_profile', blank=True, null=True)

我试过运行 python manage.py sqlsequencereset ledger 然后将其粘贴到 psql 中,但这并没有解决问题。这很奇怪,因为即使没有关联 GoogleProfile 的用户在尝试在管理员中保存时仍然会抛出此错误。

关于问题可能是什么的任何想法。我宁愿不必删除我的生产数据库并重新开始...

写完之后我认为问题可能是因为 GoogleProfile.user 字段之前可能是 oneToOne。我不是肯定的,但我认为我将 oneToOne 更改为 ForeignKey(多对一),这可以解释为什么存在唯一约束的问题。但是运行 manage.py makemigrations and migrate 应该解决问题吗?知道如何手动解决这个问题吗?

最佳答案

要手动删除约束,请运行以下命令以仔细检查约束名称:

SELECT *
FROM information_schema.constraint_table_usage
WHERE table_name = 'ledger_googleprofile';

然后

ALTER TABLE ledger_googleprofile DROP CONSTRAINT constraint_name;

鉴于您发布的错误,我猜实际的 SQL 是下面的,但我运行 SELECT 查询只是为了仔细检查:

ALTER TABLE ledger_googleprofile DROP CONSTRAINT ledger_googleprofile_user_id_key;

关于Django admin "duplicate key value violates unique constraint"Key (user_id)=(1) 已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27759734/

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