longzhifeiyu 发表于 2013-3-8 15:01:34

每次重启,第一次调用Mysql存储过程失败的解决方法

前段时间在做交叉表的功能,在CSDN和本坛得到了很多启发和帮助。后来在快接近尾声时,遇到一个不知道是不是个案的问题。
每次重启服务器,第一次运行调用存储过程会出错,返回值为空。第二次以后就正常了。
虽然也算不上毁灭性的问题,只要保持服务器不停,或者重启后自己运行一次,倒也不是问题。
这其间,反复检查存储过程中的语法错误,和优化存储过程,但都未找到问题的关键。
后来,重启一次之后,单独在Mysql中运行这段存储过程,没有出现错误。我怀疑和CI有关。
最后只好在代码中加以判断,现将调用存储过程的代码发布出来,供大家参考。
test是存储过程,tt是存储过程生成的临时表。

$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();
                     }
页: [1]
查看完整版本: 每次重启,第一次调用Mysql存储过程失败的解决方法