失败连接mysql导致wrning: mysql_num_rows(): supplied argument is not a valid MySQL result res (2021-05-20)

一个困扰了2周的问题得到了妥善地解决:网站得到了正确的数据库链接地址,可以正常地显示了。说明php5.2.17在nginx1.10.x下可以正常地工作显示之前制作的article网站版本。
原因分析:
由于同样基础和改造技术制作的dotpr.net网站,在同样的环境下是工作正常的,但是这个站就明显地报错。

精准地定位,是在添加了数据库连接失败显示报错信息之后进行的:

之前只是报错,数据库无法得到索引结果,但是不知道为什么,加了显示报错之后,提示是“No database is selected”,这样就明白了是么有选择数据库,但是实际是有语句的,所以问题可能出在没能链接上数据库服务器。(注:采用同样技术的另一个站完全正常,不存在运行环境和数据库环境不支持的情况)。

经过查看远程数据库的mysql相关user和db表,发现么有远程ip地址的链接,因此,改进了正确连接之后,权限生效,一切正常了。

这个问题涉及到许多心理误区判断,因此耽误了零零星星地接近2周时间。


*目前存在的遗留问题:
1 在浏览自定义调用include/connect.php文件,浏览list1.php?fid=27之类的页面时,页面会报错:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result res,最终发现是mysql用户权限的问题,因为另一个站点工作良好!

2 在浏览列表文章为空的文章列表时候,报错数据库索引的分页程序Offset偏移量报错:
Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 0 is invalid for MySQL result index 3 (or the query data is unbuffered) in/usr/share/nginx/html/agba-global.org/list1.php on line 19
解决:
方式很简单粗暴,在语句之前加了一个@,屏蔽报错,因为这个页面1年也浏览不到20次,所以,屏蔽报错的@的性能损失可以忽略不计在内。

3 登录后台添加文章时,总报错:
Warning: mysql_query() [function.mysql-query]: Unable to save result set in /usr/share/nginx/html/agba-global.org/include/db_mysql.php on line 45
MySQL Query:select * from articles where id='92'
Message:MySQL Query Error
这样就形成了,生成的html文件也是这样,经过合适数据库中content的记录也是这个,所以问题出在后台编辑入库环节!当数据库记录被手动修改后,再手动生成html文件,就正常了。
然后一切正常的程序都没有动过!!
最终百度到的结果是,出现了上述结果的最终成因是数据库的索引坏了!! 所以使用了navicat进行了分析,看到ok2个表和 already uptodate的几个表。试图快速修复和扩展修复的时候,和数据库脱开了连接,不得不重启navicat,但是也许修复指令生效了!之后一切生成和修改html都正常了。
数据库索引坏了的原因,也许是采用非常规方式直接复制myisam引擎的文件过目录过来到mysql5.7.22中导致的。

依稀记得问题也是一直以来的历史遗留问题:
记得以往也有无法正常生成html的时候。通过重建mysql数据库表的索引,程序也可以正常地读取Mysql数据库的索引id记录并成功地生成html文件!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值