Codeigniter 事务测试失败
Posted
技术标签:
【中文标题】Codeigniter 事务测试失败【英文标题】:Codeigniter transaction testing failing 【发布时间】:2015-11-03 05:05:50 【问题描述】:我是 Codeigniter 的新手,并尝试按照以下官方指南在 mysql 数据库上实现 Codeigniter DB 事务
https://www.codeigniter.com/user_guide/database/transactions.html
在指南中建议为了启动测试模式,我需要将 TRUE 传递给 trans_start 函数,这应该回滚数据库中的更改,但这不是正在发生。我的查询正在提交。
这是我的代码
$data = array(
'Name' => $this->input->post('name'),
'Address' => $this->input->post('addr'),
'IMEI' => $this->input->post('imei'),
'DOB' => $this->input->post('dob'),
'Maritial_Status' => $this->input->post('m_status'),
'GCM_ID' => $this->input->post('gcm'),
'Mobile' => $this->input->post('mobile'),
'Snap' => $this->input->post('snap')
);
$this->db->trans_start(TRUE);
$this->db->set('CreatedOn','NOW()', FALSE);
$this->db->insert('registered_person', $data);
$Person_ID_FK=$this->db->insert_id();
$data1 = array(
'Person_ID_FK' => $Person_ID_FK,
'Name' => $this->input->post('r_name'),
'Number' => $this->input->post('r_number'),
'Relation' => $this->input->post('relation')
);
$this->db->insert('reg_per_emergency_contact', $data1);
$this->db->set('Person_ID_FK', $Person_ID_FK);
$this->db->insert('location');
$this->db->trans_complete();
if($this->db->trans_status() === FALSE)
$resultArray= array('flag'=>10,'status'=>-1);
else
$resultArray= array('flag'=>10,'status'=>1,'Person_ID'=>$Person_ID_FK);
return $resultArray;
附:我的 MYSQL 表正在使用 InnoDB 引擎。
任何帮助将不胜感激。提前非常感谢
【问题讨论】:
【参考方案1】:这个问题之前就存在并且已经修复。你可以通过提供你的日志来贡献这个问题[1]。 为了存档您的目的,您可以使用另一种方法。
if($this->db->trans_status() === FALSE)
$resultArray= array('flag'=>10,'status'=>-1);
else
$resultArray= array('flag'=>10,'status'=>1,'Person_ID'=>$Person_ID_FK);
$this->db->trans_rollback(); //Rollback. This will remove your data from the database.
return $resultArray;
不推荐使用 $this->db->trans_off(); 替代方案。
[1]。 https://github.com/bcit-ci/CodeIgniter/issues/5
【讨论】:
以上是关于Codeigniter 事务测试失败的主要内容,如果未能解决你的问题,请参考以下文章