每次重启,第一次调用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]