【问题标题】:CodeIgniter Multiple database use without changing existing code for first databaseCodeIgniter 多数据库使用,无需更改第一个数据库的现有代码
【发布时间】:2013-07-16 22:33:34
【问题描述】:

我已经成功地使用 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";,而不是 store 数据库,所以它应该可以工作。看起来迁移库看到已经加载了一个数据库,感觉很懒,然后改用那个。

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

Convenient Way to Load Multiple Databases in Code Igniter

Error Using Multiple Database In CodeIgniter

【问题讨论】:

  • 好的,我选择了“pconnect”到“false”的解决方案。不是我想做的,但它有效。

标签: codeigniter codeigniter-2


【解决方案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();
}

【讨论】:

  • 当 pconnect 设置为 false 时,我认为不需要 close()。尽管如此,我一直在寻找一种无需设置 pconnect=false 的方法
猜你喜欢
  • 2013-12-26
  • 2013-02-27
  • 2010-10-12
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多