我是Codeigniter的新手,并尝试按照以下官方指南在MYSQL数据库上实现Codeigniter数据库事务
https://www.codeigniter.com/user_guide/database/transactions.html
在指南中,它建议为了启动测试模式,我需要将 TRUE 传递给 trans_start 函数,这应该回滚DB中的更改但是这不是发生。我的查询已经提交了。
这是我的代码
$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;
P.S。我的MYSQL表正在使用InnoDB Engine。
任何帮助将不胜感激。非常感谢提前
答案 0 :(得分:0)
此问题之前存在并且已修复。您可以通过提供日志来解决此问题[1]。 为了存档你的目的,你可以使用另一种方法。
// truncate fractions to 100 nanoseconds precision
dt.fraction /= 100;
dt.fraction *= 100;
使用$ this-> db-> trans_off();不建议使用替代方法。