每次重启服务器之后,第一次运行存储过程总报错

longzhifeiyu 2013-02-18 02:03:56
http://bbs.csdn.net/topics/390366560?page=1#post-393668335
做了一个交叉表的存储过程,每次重启服务器,第一次运行,总会出现下面的错误
A Database Error Occurred

Error Number: 1146

Table 'test.tt' doesn't exist

SELECT * FROM tt

Filename: D:\php\ci\system\database\DB_driver.php

Line Number: 330

tt是存储过程中创建的一个交叉表,重启之后库里面是有这个表的。第一次运行总会出现上面的错误,再运行就好了,不知道什么原因。
...全文
189 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
longzhifeiyu 2013-02-19
问题解决了!!!!! 原来是个很低级的疏忽。 php代码中select 那段没有指明是哪个数据库(因为写PHP的时候一直没具体指明过数据库,当然也没出过问题) 解决后的PHP代码如下:
$query = $this->db->query("select * from test.tt");
之前的错误代码是“$query = $this->db->query("select * from tt");”
  • 打赏
  • 举报
回复
longzhifeiyu 2013-02-19
存储过程代码如下,就是一楼里的链接交叉表的方法:
DROP PROCEDURE IF EXISTS `qian` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `qian`()
BEGIN
DROP TABLE IF EXISTS tt;
set @EE='';
SELECT @EE:=CONCAT(@EE,'max(IF(clitime=\'',clitime,'\'',',content,0)) AS \'',clitime,'\',') FROM (SELECT DISTINCT clitime FROM tmp_table GROUP BY clitime) a;
SET @QQ=CONCAT('SELECT ifnull(name,\'total\') as name,',LEFT(@EE,LENGTH(@EE)-1),' FROM tmp_table  GROUP BY name with rollup');
SET @QQ=CONCAT('create table tt as ',@QQ);
prepare stmt2 from @QQ;
execute stmt2;
END $$
其中读取的表tmp_table是存在的,这个我测试过。
  • 打赏
  • 举报
回复
ACMAIN_CHM 2013-02-18
你的存入过程代码是什么?
  • 打赏
  • 举报
回复
WWWWA 2013-02-18
在运行SP前,检查表TT是否存在
  • 打赏
  • 举报
回复
longzhifeiyu 2013-02-18
我重启之后,直接在Mysql下运行这个存储过程,一切正常。 然后,再开网页,也一切正常。 重启之后,如果第一次在网页运行,就会报错。后面就好了。
  • 打赏
  • 举报
回复
ACMAIN_CHM 2013-02-18
第一次运行时系统中还没有这个表。 语法分析时就会出错。
  • 打赏
  • 举报
回复
WWWWA 2013-02-18
在MYSQL命令行下运行是否正常,数据库是否正确
  • 打赏
  • 举报
回复
rucypli 2013-02-18
在存储过程执行前看看select * from tt
  • 打赏
  • 举报
回复
相关推荐
发帖
MySQL
加入

5.5w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-02-18 02:03
社区公告
暂无公告