MySQL5.7 group by新特性,报错1055的解决

今天在学习“六天带你玩转数据库”的第五天课程表子查询的时候遇到了如下报错:

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated 
column 'student.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible
 with sql_mode= only_full_group_by

MySQL5.7 group by新特性,报错1055的解决_第1张图片
参考了很多大佬的博客,发现了问题已经解决

自己昨天遇到问题到网上看了原因,说是mysql5.7中only_full_group_by这个模式是默认开启的 
解决办法大致有两种: 
一:在sql查询语句中不需要group by的字段上使用any_value()函数 当然,这种对于已经开发了不少功能的项目不太合适,
毕竟要把原来的sql都给修改一遍
二:修改my.cnf(windows下是my.ini)配置文件,删掉only_full_group_by

MySQL5.7 group by新特性,报错1055的解决_第2张图片
使用mysql命令行解决:

 使用命令:select @@sql_mode
这样就可以查出sql_mode的值,复制这个值,在my.cnf中添加配置项(把查询到的值删掉only_full_group_by
这个选项,其他的都复制过去):

MySQL5.7 group by新特性,报错1055的解决_第3张图片

 sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
如果 [mysqld] 这行被注释掉的话记得要打开注释。然后重重启mysql服务
注:使用命令
set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

网上的小伙伴还有一种简单粗暴的办法,但是慎用会带来很多问题:

set  sql_mode  = ‘’;直接将sql_mode清空,但是不推荐使用

MySQL5.7 group by新特性,报错1055的解决_第4张图片

你可能感兴趣的:(MySQL5.7 group by新特性,报错1055的解决)