mysql update 更新失败的原因。

awanganddong · 昨天 19:24 · 722 次点击

后台有一个批量操作的功能。

用户审核通过,然后给他的邀请人加优惠价。

伪代码
foreach(users as user){
    //通过审核(事务保证)
    
   // 给邀请人加优惠卷(事务保证)
}

现在出现的问题是用户加优惠价这个过程,对用户信息更新优惠卷总数失败。

给用户加优惠卷有 2 个插入操作,一个更新操作。

刚才进行批量操作,执行了 20 个用户,其中几个 update 操作失败。所以对这个问题没想明白,mysql rr 级别。

举报· 722 次点击
登录 注册 站外分享
6 条回复  
evan1 小成 昨天 19:32
看看日志
loveyu 初学 昨天 19:33
假设不是 orm ,循环生成好 SQL ,然后一个 begin exec end 搞定。 如果是 orm ,插入后还要读取数据,用事务中的数据数据做一堆操作。先加个分布式锁,然后循环内部 开始事务 干活 提交
xiaofan2 小成 昨天 19:37
你校验了 update 的返回值吗?
awanganddong 楼主 小成 昨天 19:47
@xiaofan2 没有校验 update 返回值。做的类似这样的操作 Db::transaction(function () { //用户账号 $money = 10000; $accountModel = new Account(); $accountModel->where('uid', 0) ->update([ 'dream_fund' => $money, ]); $billData = [ 'uid' => 0, 'money' => 0, 'itime' => time(), 'utime' => time(), ]; $this->model->data($billData); $this->model->save(); });
suifengba 初学 昨天 21:37
失败报错什么
awanganddong 楼主 小成 昨天 22:52
找到问题了,我在中途有个其他 update 操作,把用户余额还原了。
返回顶部