免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7703 | 回复: 5
打印 上一主题 下一主题

[PDO MYSQL 事务 回滚]PDO中对于MYSQL数据库的事务处理回滚无效的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-14 04:28 |只看该作者 |倒序浏览

  1.   $pdo = new PDO("mysql:host=127.0.0.1;dbname=test", 'root', '123456', array( PDO::ATTR_PERSISTENT => true));
  2.   $sql = "INSERT INTO `test1`(`Name`) VALUES('".com_create_guid()."')";  
  3.   var_dump($pdo->beginTransaction());
  4.   var_dump($pdo->query($sql));
  5.   var_dump($pdo->rollBack());
复制代码


按照手册上的说法,因为回滚的原因,上面的代码不会插入任何数据到数据库。
但是实际上并没有回滚~~
而使用$pdo->getAttribute(PDO::ATTR_AUTOCOMMIT)的结果居然常为int(1)。并没有按照我理解的那样在beginTransaction后变为int(0),rollBack和commit后变回int(1)。

准备去睡觉,还没有来得及看PDO的原代码是如何实现事务这部分的~~不过先发个帖子在这放着,如果有哪个兄弟搞过这个,我就省事啦~~呵呵~~

论坛徽章:
0
2 [报告]
发表于 2007-08-08 14:52 |只看该作者
<?php
try {
        $db=new PDO('mysql:host=localhost;dbname=test','test','test');
        echo "Connected\n";
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->beginTransaction();
        $db->exec("insert into test (testcontent) values ('123456')");       
        $db->commit();
}catch (Exception $e) {       
        echo "Failed:".$e->getMessage();
        $db->rollBack();
}
?>

论坛徽章:
0
3 [报告]
发表于 2007-08-08 17:32 |只看该作者
要确定MySQL支持Transactioion。

论坛徽章:
0
4 [报告]
发表于 2007-08-09 09:25 |只看该作者
哇塞,多少年前的帖子被翻上来啦~~~
当时犯了个很大的错误,忘记修改引擎为 innoDb 了~~~在 myisam 上搞了半天~

论坛徽章:
0
5 [报告]
发表于 2007-10-16 13:57 |只看该作者
原来如此

论坛徽章:
0
6 [报告]
发表于 2007-10-16 14:59 |只看该作者
存储引擎必须为innodb
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP