5

我已经成功地使用 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 文件中,它被设置为使用默认的 database: $active_group = "default";,而不是 store 数据库,所以它应该可以工作。看起来迁移库看到已经加载了一个数据库,感觉很懒惰并改用那个数据库。

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

在 Code Igniter 中加载多个数据库的便捷方式

在 CodeIgniter 中使用多个数据库时出错

4

1 回答 1

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();
}
于 2013-07-29T14:27:31.167 回答