今天在外面出差,遇到一个问题
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggre
我连接好好的,怎么这个页面报了这个错,我一顿乱找查了下导致这个问题的原因,据说是mysql5.7以后自动开启了 only_full_group_by服务,只要关了就行。
这里介绍一次生效,重启后恢复哦
SELECT @@GLOBAL.sql_mode;
你会得到
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
我们吧前面的ONLY_FULL_GROUP_BY去掉就行了
输入
SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
或
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'
这两个,随便一个就行了
然后我们再去查就ok了
第二种方法,是去改配置文件,这里就不讲了
欢迎指正