【发布时间】:2014-07-09 06:36:37
【问题描述】:
为什么我收到太多连接错误:
消息:mysqli_connect(): (08004/1040): 连接太多
切换时
$db['default']['dbdriver'] = 'mysql';
到
$db['default']['dbdriver'] = 'mysqli';
在codeIgniter的db配置文件中? ?
这说明mysqli驱动没有正确关闭所有连接?
更新:
切换数据库驱动时出现的连接过多似乎不是正确的原因(如答案所示)
我查看了我的客户网络托管公司,他们已将 max_user_connections 设置为 40(不,并不令人印象深刻 - 但我基本上只是想使用 group_concat 列出具有值的用户)。
$this->db->select('u.id AS user_id, u.first_name,
u.housenr, u.address, u.phone, u.garage_nr, u.parking_nr,
u.standing_correction, u.email, u.note, GROUP_CONCAT(wc.consumption) AS consumption,
GROUP_CONCAT(wc.id) AS consumption_id, GROUP_CONCAT(wc.consumption_date) AS
consumption_date, GROUP_CONCAT(wc.working_meetings) AS working_meetings,
GROUP_CONCAT(wc.nrof_garage) AS nrof_garage, GROUP_CONCAT(wc.nrof_parking) AS nrof_parking, GROUP_CONCAT(wc.correction) AS correction, ,
GROUP_CONCAT(wc.correction_refers) AS correction_refers')->from('water_consumption wc');
$this->db->join('user u', 'u.id = wc.user_id');
$this->db->join('role r', 'u.role_id = r.id');
$this->db->where('r.name', 'member'); //Only users with members-role
$this->db->group_by('u.id');
$this->db->order_by('LENGTH(housenr), housenr, first_name'); //Natural sorting
$this->db->order_by('consumption_date', 'desc');
$q = $this->db->get();
if ($q->num_rows() > 0) {
$res = $q->result('Water_consumption');
//more code...
这确实很奇怪,但是使用时似乎每个返回的对象都使用一个连接:
$res = $q->result('Water_consumption');
这是我的假设,因为大约创建了 40 个对象并且 max_user_connections 设置为 40。
但是在使用时
$res = $q->result();
它似乎没有使用那么多连接并且显示了模板(虽然不正确,因为它为每个耗水对象调用了函数)。
这适用于我的本地 wamp 没有任何问题,返回所有对象(大约 60 个)大约需要 2-3 秒。
【问题讨论】:
-
另见(更长的)other question。
标签: codeigniter mysqli