【发布时间】:2014-08-09 10:54:15
【问题描述】:
我正在开发相当规模的项目,该项目正处于开发阶段,使用 MySQL 作为主数据库。现在,客户端有一些数据,在 postgres SQL 中,无法转换为 MySQL。所以,我知道如果两个数据库的 dbdriver 相同,比如两个数据库都是 MySQL,那么我可以连接它。但这里的问题是,有两种不同的数据库管理系统具有不同的数据库驱动程序。那么如何同时连接两个数据库呢? 在我的 database.php 文件中,代码是:
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'xxx';
$db['default']['password'] = 'xxxxx';
$db['default']['database'] = 'xxxx';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
// ************************ anotherDatabase Connect *****************************************************
$db['database2']['hostname'] = 'xxx.xxx.xxx.xxx'; //ip address of the remote database
$db['database2']['username'] = 'xxxx';
$db['database2']['password'] = 'xxxx';
$db['database2']['database'] = 'xxxx';
$db['database2']['dbdriver'] = 'postgre';
$db['database2']['dbprefix'] = '';
$db['database2']['pconnect'] = TRUE;
$db['database2']['db_debug'] = TRUE;
$db['database2']['cache_on'] = FALSE;
$db['database2']['cachedir'] = '';
$db['database2']['char_set'] = 'utf8';
$db['database2']['dbcollat'] = 'utf8_general_ci';
$db['database2']['swap_pre'] = '';
$db['database2']['autoinit'] = TRUE;
$db['database2']['stricton'] = FALSE;
$db['database2']['port'] = 5433;
上周我一直在寻找这个并浏览了很多帖子,但没有关于它的明确信息。为了测试它,我编写了以下代码。
class C_test extends CI_Controller {
public function index()
{
echo "Test";
//$this->db->close();
//$db1 = $this->load->database('default',true);
$this->db2 = $this->load->database('database2',true);
echo "databasa Test ";
// $test1 = $db1->get('table_name')->result_array();
//print_r($test1);
//$this->db->close();
echo "=====================================================";
$test = $this->db2->get('table_name')->result_array();
//$test = $db2->get('admin')->result_array();
print_r($test);
}
}
【问题讨论】:
-
在你的问题中,你想问
$this->db2 = $this->load->database('database2',true);不工作,而$db1 = $this->load->database('default',true);工作,对吧? -
你会尝试通过
pconnect到FALSE吗? -
$db['database2']['port'] = 5432; -
不要不用 MySQL 测试,然后尝试实时部署到 PostgreSQL。您需要将测试环境切换到 PostgreSQL(或者最好在两者上进行测试)。否则会导致疼痛。
标签: php mysql database codeigniter postgresql