Codeigniter活动记录查询缓存 - 查找旧表名而不是新表名

时间:2013-09-22 20:07:40

标签: php mysql codeigniter caching activerecord

我有3个应用程序的项目共享一个codeigniter安装。在我更改mysql表的名称之前,它工作正常,并更改了查询以反映对数据库的新更改。现在看起来我的插入查询被缓存,并试图将值插入旧表(它不再存在)。这是我到目前为止所尝试的:

CI:

$this->db->cache_delete_all()

MySQL的:

RESET QUERY CACHE;

在config / database.php中:

$db['default']['db_debug'] = TRUE; 
$db['default']['cache_on'] = FALSE;

当db_debug配置设置为TRUE时,它会给出500错误,当为FALSE时,我能够捕获错误并且它已经完成,它试图插入到不再存在的旧表中。我不知道这是怎么可能的,我甚至搜索了我的完整项目,在项目的任何地方都找不到旧的表名,CI缓存文件夹也是空的。任何帮助将不胜感激。

编辑:我的插入代码:

if($this->db->insert('booking_calendar', $data))
{
    $booking_id = $this->db->insert_id();           
    $this->load->helper('string');


    $order_id = strtoupper(random_string('alnum', 6)) . $booking_id;


    $data = array(
      'id'                  => $order_id,
      'booking_calendar_id' => $booking_id,
      'status'              => 'PAYMENT_PENDING'                            
    );

    if($this->db->insert('bookings', $data))
    {
        $this->notifications->add($MYSELF['id'], 'Court successfully booked.');
        return $order_id;   
    }

    $this->notifications->add($MYSELF['id'], 'Court booking failed.', 'warning');
    return false;
}
else
{               
    log_message('ERROR', 'Insert booking_calendar failed. ' . print_r($this->db->_error_message(), true));
}

这是我日志中的输出:

ERROR - 2013-09-23 20:05:13 --> Insert booking_calendar failed. Table 'tennis.courts_calendar' doesn't exist

通知是自定义类,只在“通知”表中插入一行。

1 个答案:

答案 0 :(得分:0)

我找到了我的问题的答案,我在桌面上有 ON BEFORE INSERT / UPDATE 触发器,当我更改它的名字时,发现在同一个表上插入新名称仍然触发旧表名而不是新表名。所以我刚刚更新了触发器,现在它正在工作。希望这会为其他人节省时间,因为它花了我一段时间,即使现在从这个角度看起来微不足道。