2004/01/14

奇怪的Sql问题

今天发现我本地的Weblog的备份不能用了,一个帖子也看不到,但检查本地安装的Apache,Mysql,PHP都没有问题,重启计算机也不行,我又把服务器上的Weblog全部Copy到本地,还是不行,这下可把我难住了。
由于本地其他使用Mysql的PHP程序是好的,我只好在B2的PHP里面找疑点,一步一步定位到了从数据库执行Sql语句的地方,使用echo把 select语句输出来(PHP的调试手段太差了),大约是SELECT DISTINCT * FROM b2posts WHERE 1=1 AND post_category > 0 ORDER BY post_date DESC LIMIT 5这样的句子,可是select的result却是空,也看不到任何错误信息。
只好将同样的带echo的PHP代码上到服务器上执行,可以正确看到select的结果,这更加证明本地的Sql语句执行出了问题,可我已经很久没有动AMP了呀(Apache,MySql,PHP), 难道它自己会坏掉...
忽然想到phpmyadmin(一个基于PHP的mysql管理程序)里面可以执行Sql语句,或许可以看到一些线索,于是在IE里调出 phpmyadmin,在b2的数据库中执行上面的那个Select语句,果然失败了,并且可以看到错误原因,说"不能创建e:\winnt\temp\ *****.sql"(文件名是一堆随机字符,我记不住了)!
恍然大悟,原来前两天我清理硬盘的时候删除了e:\winnt\temp这个目录(我以为它没有用), 而PHP在执行某些Sql语句时需要用的文件缓存就存放在这里,新建这个temp目录,一切恢复正常。

教训:永远不要删除$WINDIR\temp这个目录!

没有评论: