当前位置:  开发笔记 > 编程语言 > 正文

Codeigniter - 使用多个数据库

如何解决《Codeigniter-使用多个数据库》经验,为你挑选了3个好方法。

database.php:

$db['default']['hostname'] = "192.168.2.104";
$db['default']['username'] = "webuser";
$db['default']['password'] = "----";
$db['default']['database'] = "vad";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

$db['stats']['hostname'] = "192.168.2.104";
$db['stats']['username'] = "webuser";
$db['stats']['password'] = "---";
$db['stats']['database'] = "vad_stats";
$db['stats']['dbdriver'] = "mysql";
$db['stats']['dbprefix'] = "";
$db['stats']['pconnect'] = TRUE;
$db['stats']['db_debug'] = TRUE;
$db['stats']['cache_on'] = FALSE;
$db['stats']['cachedir'] = "";
$db['stats']['char_set'] = "utf8";
$db['stats']['dbcollat'] = "utf8_general_ci";

问题是我只能在配置中定义一个 $active_group,默认值或统计信息.我按照CodeIgniter文档进行了操作,并添加了以下内容:

$DB2 = $this->load->database('stats', TRUE);

这样我连接到第二个数据库,但我失去了与第一个数据库的连接.有没有人有任何想法如何加载这两个数据库而不必在所有模型构造函数中执行以下操作?

$database1 = $this->load->database('database1', TRUE);
$database2 = $this->load->database('database2', TRUE); 

问候,

佩德罗



1> mrbinky3000..:

codeigniter中存在一个错误.在一个类中插入一行将解决整个问题.以下是原始资料来源:http: //koorb.wordpress.com/2007/11/16/codeigniter-connect-to-multiple-databases/

**此修复程序不适用于PostgreSQL

这是一个副本,以防网站出现故障.

行号已更改.以下是codeigniter的错误修复:

开始修复错误

描述

所有数据库调用都转到同一个数据库(最后一个被初始化)

要解决此问题,请更改/system/database/DB_driver.php中的simple_query函数:

function simple_query($sql)
{
    if ( ! $this->conn_id)
    {
        $this->initialize();
    }

    $this->db_select(); //<-----------------  Added this line
    return $this->_execute($sql);
}

这完全解决了问题,因此您可以在模型中执行此类操作

$this->legacy_db = $this->load->database('legacy', true);



2> Christian St..:

而不是应用Camacho提到的hack,你也可以将database.php文件中的'pconnect'-flag设置为FALSE以用于所有连接.



3> 小智..:

目前,codeigniter无法在持久连接中连接到多个数据库.所以,你应该转变你的联系的持久性.你可以这样做..

$db['default']['pconnect'] = FALSE;

$db['stats']['pconnect'] = FALSE;

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有