avinmo 发表于 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引擎不行吗

Hex 发表于 2009-10-21 11:38:20

看了一下手册确实是这么说的,难道是 CI bug?

yinzhili 发表于 2009-10-21 11:38:39

不知道事务是否支持ActiveRecord,换用 $this->db->query(''); 试试看。

Hex 发表于 2009-10-21 11:39:43

晕倒,没看清,原来楼主用了 AR,那有可能不支持吧。

avinmo 发表于 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();

一样不行。。。 数据库里照样插入数据了。

avinmo 发表于 2009-10-21 12:43:59

有谁用过的? 告诉下。。:dizzy:

Hex 发表于 2009-10-21 12:50:57

建议你还是看一下源码吧,如果根据手册写不行,那有可能是 BUG。

kazaff 发表于 2009-10-22 19:59:20

没有这方面的研究,关注啊~

avinmo 发表于 2011-1-30 19:11:45

后来找到原因了。 但一直忘记上来告诉下大家。现在补上。

要使用CI的事务。务必在建立MYSQL数据库的时候选择InnoDB引擎。

Hex 发表于 2011-1-30 19:13:51

回复 9# avinmo


    这肯定呀。。。MyISAM 引擎不支持事务呀。。。
页: [1] 2
查看完整版本: 关于事务控制