CodeIgniter多个数据库使用而不更改第一个数据库的现有代码

时间:2013-07-18 05:58:54

标签: codeigniter codeigniter-2

我已经使用codeigniter成功配置了第二个数据库,并且能够创建表格。现在的问题是,使用$this->db的每个以前存在的代码行现在都使用第二个数据库,所以它自然会弹出一个错误。让我解释一下细节:

我使用codeigniter的迁移库,在新的迁移中,我使用dbforge创建数据库,如$this->dbforge->create_database('website_store')。到目前为止一切顺利,然后使用$DB2 = $this->load->database('store', TRUE);连接到此数据库并创建一个表。一切都很好。

然后迁移结束,codeigniter尝试更新迁移表以推送最新版本,但查看store数据库而不是默认数据库,因此它会弹出以下错误:

Table 'website_store.migrations' doesn't exist
UPDATE `migrations` SET `version` = 45

希望有人知道使用多个数据库和迁移库。顺便说一句,在database.php文件中,它被设置为使用默认数据库:$active_group = "default";,而不是商店数据库,所以它应该工作。看起来迁移库看到已经加载了数据库,感觉很懒,并使用了那个。

注意: 看起来这些人有类似的问题,他们通过将'pconnect'设置为'false'来修复,但保持与两个数据库的连接会很好:

Convenient Way to Load Multiple Databases in Code Igniter

Error Using Multiple Database In CodeIgniter

1 个答案:

答案 0 :(得分:1)

在CI中,我使用以下方式处理了多个数据库:

function readFromOtherDB(){
    $config = array(
        'hostname' => "XXX",
        'username' => "XXX",
        'password' => "XXX",
        'database' => "XXX",
        'dbdriver' => "mysql",
        'dbprefix' => "",
        'pconnect' => FALSE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => "",
        'char_set' => "utf8",
        'dbcollat' => "utf8_general_ci"
    );

    $otherDb = $this->ci->load->database($config, true);

    $query = $otherDb->get_where('users', array('email' => $_email));

    $otherDb->close();
}