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