美文网首页
php中mysql事务回滚无效

php中mysql事务回滚无效

作者: 阿昕_ | 来源:发表于2018-02-19 03:51 被阅读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

相关文章

  • php中mysql事务回滚无效

    我的测试环境:AppServ 如上:第二次操作出错的情况下 第一条操作没有被回滚 这时候赶紧去看看你的数据库引擎,...

  • MySQL数据库存储引擎导致事务失败

    事务回滚无效原因找到:首先代码没有问题,是数据库存储引擎导致的问题,mysql数据库存储引擎有:MyISAM、ME...

  • MySql--undo日志(上)

    具体细节 请去掘金购买《MySQL 是怎样运行的:从根儿上理解 MySQL》 事务回滚的需求 1.这些为了回滚而记...

  • spring 单数据源的声明式事务

    mysql中使用事务回滚的语句示例: 在spring中,事务的成型包括两种: 声明式事务编程式事务 本文主要讲解的...

  • 眼见为实,看看MySQL中的隐藏列!

    在介绍mysql的多版本并发控制mvcc的过程中,我们提到过mysql中存在一些隐藏列,例如行标识、事务ID、回滚...

  • mysql 事务回滚,online ddl

    回滚当事务中有DDL时,事务回滚会出错,当事务中只有DML时,回滚一般不会出问题DDL:新建表等操作DML:数据插...

  • InnoDB,MyISAM,Memory区别

    InnoDB存储引擎 innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务...

  • 事务相关的问题总结

    一、事务回滚问题 二、事务失效问题 三、事务失效的解决办法 方式一:自己手动创建事务,提交事务,回滚事务(Spri...

  • laravel transaction 数据库事务

    laravel 提供专门的闭包的数据库事务,可以自动回滚事务也可以手动回滚事务

  • JDBC事务提交/回滚实例

    JDBC事务提交/回滚实例 以下是使用事务教程中描述的提交和回滚的代码示例。 此示例代码是基于前面章节中完成的环境...

网友评论

      本文标题:php中mysql事务回滚无效

      本文链接:https://www.haomeiwen.com/subject/jpkitftx.html