(以下内容来自学员:阿修罗)
课程
《python武器库定制》里面,第六章第一节,课程提供的虚拟机,使用phpstudy搭建。
#先说问题:
- 搭建当前站点后可以正常访问页面,做好相应配置
- 但是在查询时会出现以下问题:
- 提示在
searchbug.php
文件下的第84行出现错误 - 在文件第八十四行,是展示页面结果,实际执行的sql在第(6-8)行进行sql预处理
- 提示在
踩坑
查看当前函数(mysql_num_rows
,以为是php
版本过高(当前版本5.3),保险起见,还是切换了函数为mysqli_num_row
,还是报同样的错误.
尝试处理:
将当前sql
语句在前台进行输出
没问题的,符合要求.
将sql
语句单独放入数据库进行执行,发现会出现如下错误:
解决办法
1、找到my.ini(不知道在哪里可以用everything搜索)
2、在配置文件中,[mysqld]
下面添加sql-mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
如果遇到不能保存(拒绝访问),可以将服务停止,将my.ini
文件先保存到其他位置,之后再复制到当前mysql
的根目录下即可.(测试成功)
3、重启MySQL数据库
触发原因(摘抄自CSDN)
1、原理层面
这个错误发生在mysql 5.7.5
版本及以上版本会出现的问题:
mysql 5.7.5
版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”
,这个配置严格执行了"SQL92标准"。
很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode
,使其保持跟5.6一致,为了尽量兼容程序。
2、 sql
层面
在sql
执行时,出现该原因,简单来说就是:
由于开启了ONLY_FULL_GROUP_BY
的设置,如果select
的字段不在 group by
中,
并且select
的字段未使用聚合函数(SUM,AVG,MAX,MIN等)
的话,那么这条sql查询是被mysql
认为非法的,会报错误…
关键词:乌云镜像