一、背景
项目换了一个环境搭建,数据库进行了升级。再启动项目时,出现了下列报错。
Expression #20 of SELECT list is not in GROUP BY clause and contains nonaggregated column...
查询资料得知,是MySQL5.7.5以上的版本默认开启功能依赖检测功能,关闭这个功能就能解决这个报错了。
怎么查看是否开启了这个功能呢?
执行 select @@global.sql_mode; 命令,得到结果如下
含有 ONLY_FULL_GROUP_BY 这个值就代表这开启了这个功能。
开启这个功能代表着select出的列,必须再group by的列中出现,例如
select name,age from user group by name,age;//可以
select name from user group by name,age;//可以
select name,age from user group by name;//不可以
可以执行下面命令关闭这项功能,但是这种方式不是永久的,mysql重启之后就会恢复原来的配置。
set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
修改 /etc/mysql/conf.d/mysql.cnf mysql的配置文件,可以避免重启后失效。
扫描二维码关注公众号,回复:
15630557 查看本文章
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
修改记得保存,保存后记得重启mysql!!!