1、问题记录:
控制台报错如下:
Expression #1 of HAVING clause is not in GROUP BY clause and contains nonagg column ‘xxxx’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by0
遇到这样的问题,这是由于MySQL启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下)。百度搜了很多办法,如修改mysql的my.ini配置文件等,但是并没有什么用,如果下次也遇到这样的问题,也没有解决,不妨试试下面方法。
2、解决方法:
打开Navicat或者SQLyog或者其他数据库管理工具,执行如下查询命令:
select @@global.sql_mode
你会看到查询出来的字符串中,有ONLY_FULL_GROUP_BY
,这也正是祸害的根源,因此,我们的目的就是去掉这个值。所以,执行如下命令:
数据库原本其他的字符串,也可以追加到里面,以逗号隔开。
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
执行完后,应该已经成功了,不妨再使用select @@global.sql_mode
查看一下。会去掉ONLY_FULL_GROUP_BY
3、成功结果如图:
清理后、重启项目,即可正常识别运行。
-------------------------------------------------------以下无正文--------------------
注:仅供学习,记录问题和参考,共勉!