Heim  >  Artikel  >  Backend-Entwicklung  >  php中mysql事务回滚无效怎么办

php中mysql事务回滚无效怎么办

PHPz
PHPzOriginal
2016-06-06 20:50:131689Durchsuche

php中mysql事务回滚无效是因为数据库引擎设置为“MyISAM”了,该引擎是不支持事务回滚的,所以产生事务回滚无效,其解决办法就是将引擎更换为“InnoDB”即可恢复正常。

php中mysql事务回滚无效怎么办

php中mysql事务回滚无效怎么办?

我的测试环境:AppServ

<?php 
    header("Content-type:text/html;charset=utf-8");
    $pdo = new PDO(&#39;mysql:host=localhost;dbname=data&#39;,&#39;root&#39;,&#39;root&#39;);
    $pdo->exec(&#39;set names utf8&#39;);
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);#修改报错模式
  #开启事务
    $pdo->beginTransaction();
    try{
        #第一次操作
        $sql = &#39;delete from books where bId=40&#39;;
        $smt = $pdo->prepare($sql);
        $smt->execute();
        #第二次操作
        $sql = &#39;delete from1 books where bId=39&#39;;
        $smt = $pdo->prepare($sql);
        $smt->execute();
        #成功提交
        $pdo->commit();
    }catch(PDOException $e){
        echo $e->getMessage().&#39;<br>&#39;.$e->getLine();
        #失败撤回
        $pdo->rollBack();
    }
 ?>

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

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

企业微信截图_15926227684879.png

更多相关技术文章,请访问PHP中文网

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn