用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7656|回复: 11
收起左侧

[HELP] 关于事务控制

[复制链接]
发表于 2009-10-21 11:16:59 | 显示全部楼层 |阅读模式
我用CI写了个事务控制的代码断,发觉貌似没有回滚的。
我写了如下:

$this->db->trans_start(TRUE); // 查询将被回滚
$this->db->insert('aaa',$data);
$this->db->trans_complete();

不是说这个trans_start(true),是测试事务吗? 应该会自动回滚的啊。 但是我数据的确被插入到数据库了。并没有回滚。
表类型:InnoDB
发表于 2014-12-4 13:33:27 | 显示全部楼层
avinmo 发表于 2011-1-30 19:11
后来找到原因了。 但一直忘记上来告诉下大家。现在补上。

要使用CI的事务。务必在建立MYSQL数据库的时候 ...

你的意思是,数据库也必须是innodb引擎吗,光操作的表是innodb引擎不行吗
发表于 2009-10-21 11:38:20 | 显示全部楼层
看了一下手册确实是这么说的,难道是 CI bug?
发表于 2009-10-21 11:38:39 | 显示全部楼层
不知道事务是否支持ActiveRecord,换用 $this->db->query(''); 试试看。
发表于 2009-10-21 11:39:43 | 显示全部楼层
晕倒,没看清,原来楼主用了 AR,那有可能不支持吧。
 楼主| 发表于 2009-10-21 12:00:41 | 显示全部楼层
$this->db->trans_start(TRUE); // 查询将被回滚
                        //$this->db->insert('product_brand',$brand);
                        $sqlstr = "INSERT INTO `admins` (`account`, `pwd`, `power`) VALUES ('adminddd', '21232f297a57a5a743894a0e4a801fc3', 100);";
                        $this->db->query($sqlstr);
                        $this->db->trans_complete();

一样不行。。。 数据库里照样插入数据了。
 楼主| 发表于 2009-10-21 12:43:59 | 显示全部楼层
有谁用过的? 告诉下。。
发表于 2009-10-21 12:50:57 | 显示全部楼层
建议你还是看一下源码吧,如果根据手册写不行,那有可能是 BUG。
发表于 2009-10-22 19:59:20 | 显示全部楼层
没有这方面的研究,关注啊~
 楼主| 发表于 2011-1-30 19:11:45 | 显示全部楼层
后来找到原因了。 但一直忘记上来告诉下大家。现在补上。

要使用CI的事务。务必在建立MYSQL数据库的时候选择InnoDB引擎。
发表于 2011-1-30 19:13:51 | 显示全部楼层
回复 9# avinmo


    这肯定呀。。。MyISAM 引擎不支持事务呀。。。

本版积分规则