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

[核心代码 Core] 每次重启,第一次调用Mysql存储过程失败的解决方法

[复制链接]
发表于 2013-3-8 15:01:34 | 显示全部楼层 |阅读模式
前段时间在做交叉表的功能,在CSDN和本坛得到了很多启发和帮助。后来在快接近尾声时,遇到一个不知道是不是个案的问题。
每次重启服务器,第一次运行调用存储过程会出错,返回值为空。第二次以后就正常了。
虽然也算不上毁灭性的问题,只要保持服务器不停,或者重启后自己运行一次,倒也不是问题。
这其间,反复检查存储过程中的语法错误,和优化存储过程,但都未找到问题的关键。
后来,重启一次之后,单独在Mysql中运行这段存储过程,没有出现错误。我怀疑和CI有关。
最后只好在代码中加以判断,现将调用存储过程的代码发布出来,供大家参考。
test是存储过程,tt是存储过程生成的临时表。
PHP复制代码
 
$sql="CALL test()";
$this->db->query($sql);     $this->db->reconnect();
                        if ($this->db->table_exists('tt')){
                                        结果不为空代表调用成功。
                        }else {
 
                                        结果为空代表调用失败。重新调用一次。
                                        $query =$this->db->query($sql);
                                        $this->db->reconnect();
                       }
复制代码

本版积分规则