postgresql Django在并行请求上的完整性错误

xt0899hw  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(129)

我有:

IntegrityError
duplicate key value violates unique constraint "user_pkey"
DETAIL:  Key (id)=(3220037) already exists.

字符串
这发生在代码的这一部分

user = User()
            user.save()


模型很简单,3个字段。因此,当有很多并行请求到达我的端点时,就会发生这种情况。
我认为Django在这样一个简单的操作中处理了竞争条件。数据库为Postgres,默认事务隔离为read committed
也许smth在新的Django版本中发生了变化?race condition需要我自己在代码中处理吗?

lsmd5eda

lsmd5eda1#

在模型上使用事务原子查询集解决方案1

@transaction.atomic
        def create_user():
            user = User()
            user.save()

字符串
解决方案2

with transaction.atomic():
   user = User()
   user.save()


使用select_update_or_create

相关问题