zoukankan      html  css  js  c++  java
  • MySQL中版本5.7及以上出现的ONLY_FULL_GROUP_BY问题

    在MySQL5.7及以上使用group by会出现:

    Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.t_long.user_name' 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的校验功能

    1.如何查看你的sql_mode

    SELECT @@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

    2.如何修改配置

    在MySQL的文件夹根目录下,有一个文件my.ini,(windows下为my.ini ,在linux下为my.cnf),打开
    在[mysqld]下方找sql_mode这一个值,将其改为
    STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 如果没有,则在[mysqld]下方,手动添加
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

     如果上述方法不成功,可以使用sql语句的方式进行替换

    # 替换存在导致失败的设置

    Set sql_mode=(select replace(@@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'));

    这个时候就可以放心的使用group by了。



  • 相关阅读:
    Asp.net操作Excel----NPOI
    Python第一模块
    Sping笔记一览
    IO流技术一览
    事务技术一览
    日常问题记录
    分页与JDBC显示文档。
    分页技术与JDBC一览
    JDBC 技术开发
    MYSQL
  • 原文地址:https://www.cnblogs.com/mylqm/p/13441435.html
Copyright © 2011-2022 走看看