灵异事件?!一个 request 里,操作数据掉了一半…
資深大佬 : liudaqi 9
今天遇到一个用户反应数据出错,然后去把数据拉出来核对,真的是错了,只是错误百思不得姐:
def pipline(): a.name = 'new name' sql.session.add(a) sql.session.commit() b.status = 'done' sql.session.add(b) sql.session.commit()
pipline() 是在一个 request 中完成的,程序中没有用事务回滚。结果发现 b.status 存到数据库中了,a.name 在数据库中没有保存下来。
这个业务流程从来没有出错过,只是有可能用户刚刚在操作的时候,刚好服务器有执行过重启操作,有可能这么巧合吗,把一个 request 中的数据库插入给丢一半、留一半?
大佬有話說 (5)