今天搞 PHP 开发的时候,搞出了这个错误:我执行的语句是:INSERT INTO `tb_Replies`(`W_ID`,`R_Name`,`R_Contact`,`R_Content`) VALUES (98,'test','test','test');结果竟然返回错误:1146:Table 'mysite.writings' doesn't exist大家看清楚了,我插入的是 tb_Replies 表,结果竟然返回 writings 表不存在(事实上我数据库里根本没 writings 这表)。而且,虽然返回了错误,数据却是插入成功。大家有没有遇到过类似的问题 ?该如何解决?

解决方案 »

  1.   

    show create table  `tb_Replies`看一下是什么?
      

  2.   

    不知道,拿到你的create table 语句,这样才能做实验。另外有没有什么触发器在这个表上。
      

  3.   

    没有触发器,而且这个数据库中只有这个表用插入语句是出错的。| tb_Replies | CREATE TABLE `tb_Replies` (
      `R_ID` int(10) unsigned NOT NULL auto_increment,
      `R_Name` varchar(15) NOT NULL,
      `R_Contact` varchar(30) NOT NULL,
      `R_Content` varchar(400) NOT NULL,
      `R_Time` timestamp NOT NULL default CURRENT_TIMESTAMP,
      `W_ID` int(10) unsigned NOT NULL,
      `F_R_ID` int(10) unsigned NOT NULL default '0',
      PRIMARY KEY  USING BTREE (`R_ID`),
      KEY `W_ID` USING BTREE (`W_ID`),
      KEY `F_R_ID` USING BTREE (`F_R_ID`)
    ) ENGINE=MyISAM AUTO_INCREMENT=211 DEFAULT CHARSET=utf8
      

  4.   

    测试了没有问题啊,你能同样做如下测试吗?直接在mysql工具中。这样可以排除是你PHP程序的问题。
    另外show triggers 看一下。mysql> CREATE TABLE `tb_Replies` (
        ->  `R_ID` int(10) unsigned NOT NULL auto_increment,
        ->  `R_Name` varchar(15) NOT NULL,
        ->  `R_Contact` varchar(30) NOT NULL,
        ->  `R_Content` varchar(400) NOT NULL,
        ->  `R_Time` timestamp NOT NULL default CURRENT_TIMESTAMP,
        ->  `W_ID` int(10) unsigned NOT NULL,
        ->  `F_R_ID` int(10) unsigned NOT NULL default '0',
        ->  PRIMARY KEY  USING BTREE (`R_ID`),
        ->  KEY `W_ID` USING BTREE (`W_ID`),
        ->  KEY `F_R_ID` USING BTREE (`F_R_ID`)
        -> ) ENGINE=MyISAM AUTO_INCREMENT=211 DEFAULT CHARSET=utf8;
    Query OK, 0 rows affected (0.03 sec)mysql> INSERT INTO `tb_Replies`(`W_ID`,`R_Name`,`R_Contact`,`R_Content`) VALUES
    (98,'test','test','test');
    Query OK, 1 row affected (0.00 sec)mysql>
      

  5.   

    测试出了原因,是由于触发器的问题,因为刚改了表名,所以之前 show trigger 时没有发现。十分感谢。