php中mysql事务回滚无效

我的测试环境:AppServ

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

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

这时候赶紧去看看你的数据库引擎,你肯定看到是MyISAM,很不幸这个引擎不支持事务回滚。切换到 InnoDB 即可 。
php中mysql事务回滚无效_第1张图片

  • github:https://github.com/webxing
  • 简书:https://www.jianshu.com/u/489662a091fd

你可能感兴趣的:(PHP)