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

发布于 2022-09-12 04:05:14 字数 762 浏览 18 评论 0

因为项目需要用到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 . '失败'];
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

℡Ms空城旧梦 2022-09-19 04:05:14

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 . '失败'];
        }
    }
浅忆 2022-09-19 04:05:14

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

地狱即天堂 2022-09-19 04:05:14

我也碰到这问题了,楼主怎么解决的啊!麻烦告知一声哈,谢谢了!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文