php中mysql事务回滚无效

2018-02-19  本文已影响74人  阿昕_

我的测试环境: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 即可 。


InnoDB.png
上一篇 下一篇

猜你喜欢

热点阅读