我刚刚测试了对codeigniter 2的升级并遇到了麻烦。我的网站使用多个数据库,一个是“系统”数据库,另一个是“内容”数据库之一。一次只加载两个数据库,根据会话中的值,系统和任何内容都是必需的。
由于使用了会话,我通过MY_Controller中的函数连接到控制器构造函数中的相关内容数据库。
不知何故,自从升级到codeigniter 2后,内容数据库的连接对象无法进入使用它的模型。
即。连接的变量是在控制器和模型以及MY_Controller和MY_Model的顶部公开的,但是当它到达MY_Model时,它不再是一个对象。
任何想法会重置变量的值,因为它传递给codeigniter 2中的模型而不是codeigniter 1.7.3?
答案 0 :(得分:0)
两个数据库是否使用相同的主机名,用户名和密码?
如果是,那么这就是我们遇到的同样问题: http://codeigniter.com/forums/viewthread/72240/P15/
我们通过创建具有不同用户名的mysql用户来解决它,userA可以访问dbA,而userB可以访问dbB。
当你有:
时,会发生什么$this->dbA = $this->load->database('dbA_config', true);
$this->dbB = $this->load->database('dbB_config', true);
当您运行第2行时,php会查看此连接是否已打开,问题是php只查看主机名,用户名和密码,因此当您尝试更改数据库时,PHP实际上是通过引用更新dbA。
希望有所帮助。
-Noah