MYSQL_功能检测依赖

一、背景

项目换了一个环境搭建,数据库进行了升级。再启动项目时,出现了下列报错。

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!!!

猜你喜欢

转载自blog.csdn.net/weixin_40877388/article/details/119994085