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

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是存储过程中创建的一个交叉表,重启之后库里面是有这个表的。第一次运行总会出现上面的错误,再运行就好了,不知道什么原因。
...全文
243 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

56,866

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧