我已经使用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'来修复,但保持与两个数据库的连接会很好:
答案 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();
}