You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codeigniter中调用非默认MySQL数据库storesDB获取数据失败原因排查

问题

在CodeIgniter框架中尝试从非默认MySQL数据库storesDB获取数据,在模型方法中添加了$this->load->database('storesDB', TRUE);语句,但执行后仍从默认数据库取数,模型代码如下:

public function getEquipment($id = null)
{       
    $this->load->database('storesDB', TRUE);
    $this->db->select('*');
    $this->db->from('tbl_equipment');
    $this->db->join('tbl_equipment_category', 'tbl_equipment.eq_cat=tbl_equipment_category.id_cat');
    $this->db->where("tbl_equipment.status", '1');
    if ($id)
        $this->db->where("tbl_equipment.id", $id);        
    $query = $this->db->get();
    return $query->result();
}

请问可能的原因是什么?

可能的原因及解决办法
  • 未接收新数据库连接实例:调用$this->load->database('storesDB', TRUE);时,第二个参数TRUE会返回一个新的数据库连接对象,而非替换默认的$this->db。你当前没有将这个新对象赋值给变量,后续操作依然使用默认的$this->db连接,自然还是从默认数据库取数。
    修正方式:将新连接赋值给变量,后续所有数据库操作都使用该变量:
    public function getEquipment($id = null)
    {       
        $stores_db = $this->load->database('storesDB', TRUE);
        $stores_db->select('*');
        $stores_db->from('tbl_equipment');
        $stores_db->join('tbl_equipment_category', 'tbl_equipment.eq_cat=tbl_equipment_category.id_cat');
        $stores_db->where("tbl_equipment.status", '1');
        if ($id)
            $stores_db->where("tbl_equipment.id", $id);        
        $query = $stores_db->get();
        return $query->result();
    }
    
  • storesDB配置有误:检查application/config/database.php中storesDB的配置项,确认数据库名称、用户名、密码、主机地址是否与实际的storesDB完全匹配,注意MySQL在部分系统下数据库名区分大小写,避免拼写错误。
  • 配置缓存未更新:如果之前修改过数据库配置但未清空缓存,CodeIgniter可能仍在使用旧配置。可以删除application/cache目录下的缓存文件,或重启PHP服务让新配置生效。
  • 重复加载连接导致冲突:如果模型或控制器中之前已加载过默认数据库连接,且未正确隔离新连接,可能导致后续操作仍走默认连接。确保在方法开头就获取新连接,且全程使用该连接对象执行操作。

内容的提问来源于stack exchange,提问作者MCIT Trends

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:30:53