SQL server错误:不允许启动新事务,因为有其他线程正在该会话中运行

因为项目需要用到sql server数据库 刚上手使用事务的时候就遇到这个错误 网上好像找不到相关的资料 有朋友知道怎么排查问题吗?
用的是tp5+sql server
image

     Db::startTrans();// 启动事务
        try{
            if($id == session('uid')){
                return ['code'=>100,'data' => '','msg'=>'不可禁用自己','type'=>'no'];
            }else {
                $this->where ('id' , $id)->setField (['status' => $num]);
                Db::commit();// 提交事务
      
                   return ['code' => 200, 'data' => '', 'msg' => '已'.$msg];
            }
       }catch( \Exception $e) {
            Db::rollback();//回滚事务
       
            return ['code' => 100, 'data' => '', 'msg' => $msg . '失败'];
        }
    }
阅读 5.6k
3 个回答

sql server不熟悉 但是代码上 给个建议。。
尽量别if else 用拦截法判断 再事务开始就可以做过滤 而且没涉及到db操作
代码会可读性和编写性好点

if($id == session('uid')){
                return ['code'=>100,'data' => '','msg'=>'不可禁用自己','type'=>'no'];
 }
Db::startTrans();// 启动事务
        try{
                $this->where ('id' , $id)->setField (['status' => $num]);
                Db::commit();// 提交事务
                return ['code' => 200, 'data' => '', 'msg' => '已'.$msg];
            }
       }catch( \Exception $e) {
            Db::rollback();//回滚事务
            return ['code' => 100, 'data' => '', 'msg' => $msg . '失败'];
        }
    }
新手上路,请多包涵

楼主,我也遇到了同样的问题,但是我也屏蔽掉了开启事务的可能写法,但是还是报错,我用的是crmeb封装的tp6框架!正常的增删改查是可以的~但是无法使用事务功能!
图片.png
图片.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题