ci 连接多个sql server 工作不正常
环境:wamp : php 5.3.1 sql server 2005
代码:
<?php
class Admapp_model extends CI_Model {
protected $messages;
protected $errors;
function __construct()
{
parent::__construct();
$this->erpdb = $this->load->database('test',true);
$this->sysdb = $this->load->database('default',true);
$this->load->helper('cookie');
$this->load->helper('date');
$this->load->library('session');
}
// 获取 erp 服务器的职员信息
public function erp_emps(){
$this->erpdb ->select('fitemid ,fname ,fdeleted ,fdepartmentid')
->from('t_Emp');
return $erpdb->get()->result();
}
说明:
1.运行 erp_emps 会报错 ”对象名 't_Emp' 无效。“
2. 两个数据都设置了 pconnect为false
3. 注释 $this->sysdb = $this->load->database('default',true);
或者把 $this->erpdb = $this->load->database('test',true); 放到$this->sysdb = $this->load->database('default',true); 的后面就正常了。
结论:
每次 loaddatabase 时前面load 的database 连接都被覆盖了。
不知道有没有其他人碰到过这种问题。CI 的漏洞?
知道原因了: 我的两个数据库在同一数据库服务器上。 加载第一个数据库和第二个数据库返回的 resourceid
是一模一样的。 只是关联的具体数据库不一样。
如果两个数据库不在同一服务器上。这时才是按照我的期望工作。
colin_xia 发表于 2012-3-15 14:31 static/image/common/back.gif
知道原因了: 我的两个数据库在同一数据库服务器上。 加载第一个数据库和第二个数据库返回的 resourceid
...
找到解决方法了:修改 db_driver.php 文件
function simple_query($sql)
{
// change by colin 2012-03-15
// 目的是实现多数据库连接。通过每次查询前执行initialize 函数 切换到正确的数据库
// if ( ! $this->conn_id)
// {
$this->conn_id = '';
$this->initialize();
// }
return $this->_execute($sql);
}
页:
[1]