php中mysql事务回滚无效

我的测试环境:AppServ

<?php 
    header("Content-type:text/html;charset=utf-8");

    $pdo = new PDO('mysql:host=localhost;dbname=data','root','root');
    $pdo->exec('set names utf8');
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);#修改报错模式

  #开启事务
    $pdo->beginTransaction();

    try{
        #第一次操作
        $sql = 'delete from books where bId=40';
        $smt = $pdo->prepare($sql);
        $smt->execute();

        #第二次操作
        $sql = 'delete from1 books where bId=39';
        $smt = $pdo->prepare($sql);
        $smt->execute();

        #成功提交
        $pdo->commit();

    }catch(PDOException $e){
        echo $e->getMessage().'<br>'.$e->getLine();

        #失败撤回
        $pdo->rollBack();
    }


 ?>

如上:第二次操作出错的情况下 第一条操作没有被回滚

这时候赶紧去看看你的数据库引擎,你肯定看到是MyISAM,很不幸这个引擎不支持事务回滚。切换到 InnoDB 即可 。
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值