php中mysql事务回滚无效

我的测试环境:AppServ

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().'
'.$e->getLine(); #失败撤回 $pdo->rollBack(); } ?>

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

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


php中mysql事务回滚无效_第1张图片
InnoDB.png

你可能感兴趣的:(php中mysql事务回滚无效)