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是存储过程中创建的一个交叉表,重启之后库里面是有这个表的。第一次运行总会出现上面的错误,再运行就好了,不知道什么原因。

解决方案 »

  1.   

    在存储过程执行前看看select  * from tt
      

  2.   

    在MYSQL命令行下运行是否正常,数据库是否正确
      

  3.   

    我重启之后,直接在Mysql下运行这个存储过程,一切正常。
    然后,再开网页,也一切正常。
    重启之后,如果第一次在网页运行,就会报错。后面就好了。
      

  4.   

    在运行SP前,检查表TT是否存在 
      

  5.   

    存储过程代码如下,就是一楼里的链接交叉表的方法:
    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是存在的,这个我测试过。
      

  6.   

    问题解决了!!!!!
    原来是个很低级的疏忽。
    php代码中select 那段没有指明是哪个数据库(因为写PHP的时候一直没具体指明过数据库,当然也没出过问题)
    解决后的PHP代码如下:
    $query = $this->db->query("select * from test.tt");之前的错误代码是“$query = $this->db->query("select * from tt");”