用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2315|回复: 6
收起左侧

[讨论/交流] 关于 ci 在db 方面的一些问题

[复制链接]
发表于 2012-2-8 17:12:55 | 显示全部楼层 |阅读模式
关于 ci 在db链接方面的一些 个人存在一些性能上的疑问 再次寻求技术帮助
 楼主| 发表于 2012-2-8 17:14:34 | 显示全部楼层
问题 补充 ci 在一个脚本中 对数据库 切换 支持不好
发表于 2012-2-8 17:29:10 | 显示全部楼层
请具体描述一下问题,我觉得是你的代码有问题。
 楼主| 发表于 2012-2-8 17:56:29 | 显示全部楼层
哦 在config中的 db 配置中 有几个数据库  每一个 host  用户名 密码 都一样 pconnect 也都是true 只有数据库名不同
在数据切换的时候 由于之前已经建立链接 在$this->load->database('realdatabase') 的时候 不会重新建立数据库链接 而是使用之前的链接(目前到这里都正常)
而且链接的默认数据库没有改变
下面的执行sql 的时候 db->from('table'); 自然这个表是在 在'realdatabase'里面 而 不在默认链接的数据里面 由于数据库没有切换 自然会报错 表不存在
 楼主| 发表于 2012-2-8 17:56:50 | 显示全部楼层
Hex 发表于 2012-2-8 17:29
请具体描述一下问题,我觉得是你的代码有问题。

哦 在config中的 db 配置中 有几个数据库  每一个 host  用户名 密码 都一样 pconnect 也都是true 只有数据库名不同
在数据切换的时候 由于之前已经建立链接 在$this->load->database('realdatabase') 的时候 不会重新建立数据库链接 而是使用之前的链接(目前到这里都正常)
而且链接的默认数据库没有改变
下面的执行sql 的时候 db->from('table'); 自然这个表是在 在'realdatabase'里面 而 不在默认链接的数据里面 由于数据库没有切换 自然会报错 表不存在
发表于 2012-2-8 18:34:17 | 显示全部楼层
h272711904 发表于 2012-2-8 17:56
哦 在config中的 db 配置中 有几个数据库  每一个 host  用户名 密码 都一样 pconnect 也都是true 只有数 ...

pconnect 要设置为 false 才可以用多数据库,否则数据库切换就有问题,这个是 PHP 本身造成的。

请看 http://codeigniter.org.cn/user_guide/database/connecting.html
 楼主| 发表于 2012-2-8 18:47:05 | 显示全部楼层
我想 您是对php 与mysql 链接的理解有误解
mysql_pconnect() 宗旨是 在链接之前会尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果存在 则使用旧的链接
这是为了提高性能 减少建立链接的开销
并非不能建立 多个数据的持久链接 切换使用

本版积分规则