http://bbs.csdn.net/topics/390366560?page=1#post-393668335
做了一个交叉表的存储过程,每次重启服务器,第一次运行,总会出现下面的错误
A Database Error OccurredError Number: 1146Table 'test.tt' doesn't existSELECT * FROM ttFilename: D:\php\ci\system\database\DB_driver.phpLine Number: 330tt是存储过程中创建的一个交叉表,重启之后库里面是有这个表的。第一次运行总会出现上面的错误,再运行就好了,不知道什么原因。
做了一个交叉表的存储过程,每次重启服务器,第一次运行,总会出现下面的错误
A Database Error OccurredError Number: 1146Table 'test.tt' doesn't existSELECT * FROM ttFilename: D:\php\ci\system\database\DB_driver.phpLine Number: 330tt是存储过程中创建的一个交叉表,重启之后库里面是有这个表的。第一次运行总会出现上面的错误,再运行就好了,不知道什么原因。
然后,再开网页,也一切正常。
重启之后,如果第一次在网页运行,就会报错。后面就好了。
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是存在的,这个我测试过。
原来是个很低级的疏忽。
php代码中select 那段没有指明是哪个数据库(因为写PHP的时候一直没具体指明过数据库,当然也没出过问题)
解决后的PHP代码如下:
$query = $this->db->query("select * from test.tt");之前的错误代码是“$query = $this->db->query("select * from tt");”