mysql 并发请求时,第二个请求保存的数据是第一个请求的,请问是什么原因?怎么解决?

mysql 并发请求时,第二个请求保存的数据是第一个请求的,请问是什么原因?怎么解决?

环境 mysql,django

通过此请求函数,逐条的生成订单的佣金

def get(self, request):

#

# 通过订单表,获取一条未生成佣金的订单

#

order = Order.objects.filter(未生成佣金=True).first()

if order:

# 根据用户uid生成佣金

order.wages = get_wages(order.uid)

# 保存至数据库

order.save()

return Response('佣金生成成功')

出现的问题:

当两个请求同时过来时

请求A: 获取到用户A的订单,生成用户A的佣金,保存(正常)。

请求B:获取到用户B的订单,但是这里用户B的佣金是请求A生成的佣金,,并不是请求B生成的佣金(佣金数据生成错误)

问题总结:

两个请求同时访问这个链接,请求A保存的佣金是对的。但是请求B中保存的佣金并不是请求B生成的佣金,而是请求A生成的佣金

请问发生这种情况的原因是什么?

我应该怎么解决这种情况


回答:

order = Order.objects.filter(未生成佣金=True).first()你这条语句,没有指定用户A还是B,只是第一条没有生成佣金的订单

以上是 mysql 并发请求时,第二个请求保存的数据是第一个请求的,请问是什么原因?怎么解决? 的全部内容, 来源链接: utcz.com/p/938325.html

回到顶部