【问题标题】:Is my transaction code causing lock_wait_timeout error?我的事务代码是否导致 lock_wait_timeout 错误?
【发布时间】:2016-08-25 07:13:35
【问题描述】:

因为在 codeigniter 中实现事务有两种可能的方式:

1.自动

2.手册

I am getting an error like :Lock_wait_timeout 在我的 codeigniter 应用程序中。我的代码中没有任何错误查询。但我发现我已经为类似于手动交易的自动交易编写了交易代码。

自动交易使用 trans_start() ,而手动交易使用 trans_begin()。

对于手动事务,codeigniter 使用以下语法

$this->db->trans_begin();
insert query...
update query...

if($this->db->trans_status()===FALSE){

   $this->db->trans_rollback();
}else{
   $this->db->trans_commit();
}

但我在我的代码中使用了自动事务,并写成如下(使用 if else 语句,如手动事务):

 $this->db->trans_start();
    insert query...
    update query...
 $this->db->trans_complete();
    if($this->db->trans_status()===FALSE){

       $this->db->trans_rollback();
    }else{
       $this->db->trans_commit();
    }

【问题讨论】:

    标签: php mysql codeigniter transactions


    【解决方案1】:

    trans_complete() 函数的作用与 if/else 语句几乎完全相同,因为它会酌情调用trans_rollback()trans_commit()。毫无疑问,您的第二次提交或回滚尝试极大地混淆了您的数据库。只需删除您的 if/else ,一切都会好起来的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 2022-01-21
      • 2017-08-09
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      相关资源
      最近更新 更多