Mysql 具有多个表的codeigniter中的事务
一般来说,我不熟悉事务,尤其是CodeIgniter。我正在使用InnoDB和所有东西,但我的事务不会在我希望的时候回滚。这是我的代码(稍微简化)Mysql 具有多个表的codeigniter中的事务,mysql,codeigniter,transactions,rollback,Mysql,Codeigniter,Transactions,Rollback,一般来说,我不熟悉事务,尤其是CodeIgniter。我正在使用InnoDB和所有东西,但我的事务不会在我希望的时候回滚。这是我的代码(稍微简化) 我没有收到任何错误消息,但它也不会回滚。它应该在提交之前的最后一次trans_回滚时回滚。我的模型都在“dog”数据库中,因此我认为事务将包含在模型的功能中。也许你不能用这样的模型。任何帮助都将不胜感激!谢谢 也许,这是因为你使用$dog\u db连接,并回滚不存在的$booze\u db交易?(或者它是一个拼写错误?也许,这是因为你使用$dog\u
我没有收到任何错误消息,但它也不会回滚。它应该在提交之前的最后一次trans_回滚时回滚。我的模型都在“dog”数据库中,因此我认为事务将包含在模型的功能中。也许你不能用这样的模型。任何帮助都将不胜感激!谢谢 也许,这是因为你使用$dog\u db连接,并回滚不存在的$booze\u db交易?(或者它是一个拼写错误?也许,这是因为你使用$dog\u db连接,并回滚不存在的$booze\u db交易?(或者它是一个拼写错误?好吧,我知道这篇文章很古老,但这是我的2美分: 我不认为:
if(!$this->descriptions->insert($new_description))
将起作用,因为CI活动记录中的插入函数始终返回TRUE(成功与否)。如果您使用的是调试模式,CI将在出现错误时停止并向用户抛出屏幕消息,但insert函数仍将返回TRUE
因此,如果您愿意使用CI“手动”控制事务,则必须使用以下内容:
...
$this->db->trans_begin();
$this->db->insert('FOO');
if ($this->db->trans_status() === FALSE){
$this->db->trans_rollback();
}else{
$this->db->trans_commit();
}
希望这有助于某人…某个时候…某个地方好吧,我知道这篇文章很古老,但这是我的2美分: 我不认为:
if(!$this->descriptions->insert($new_description))
将起作用,因为CI活动记录中的插入函数始终返回TRUE(成功与否)。如果您使用的是调试模式,CI将在出现错误时停止并向用户抛出屏幕消息,但insert函数仍将返回TRUE
因此,如果您愿意使用CI“手动”控制事务,则必须使用以下内容:
...
$this->db->trans_begin();
$this->db->insert('FOO');
if ($this->db->trans_status() === FALSE){
$this->db->trans_rollback();
}else{
$this->db->trans_commit();
}
希望这有助于某人…某个时候…某个地方是的,这是一个打字错误,哈哈。编辑。是的,这是一个打字错误,哈哈。编辑。