美文网首页
解决mysql 5.7 以上 sql_mode 分组查询问题

解决mysql 5.7 以上 sql_mode 分组查询问题

作者: 叶情宇 | 来源:发表于2019-02-18 17:40 被阅读0次

    在分组查询是遇到个问题,直接报错,报错日志如下:

    [ error ] [10501]SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mcdull_sql.md_score.scoreName' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
    
    

    主要原因是
    MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册。)

    解决方式,只需要在msql_cnf配置文件中设置sql_mode即可
    我使用的mamp集成系统,设置很方便,设置如下(这两种设置方式都可以,要不设置空)

    #sql_mode=''
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    

    具体截图


    企业微信20190218053835.png

    重启mysql
    完美解决!!!

    相关文章

      网友评论

          本文标题:解决mysql 5.7 以上 sql_mode 分组查询问题

          本文链接:https://www.haomeiwen.com/subject/amhzeqtx.html