• 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了。



  • 相关阅读:
    No bean named 'springSecurityFilterChain' is defined
    Spring管理hibernate Session
    集成hibernate
    Maven setting.xml
    SpringMVC集成Spring
    搭建SpringMVC
    一个简单的web project
    一文带你认识Java8中接口的默认方法
    抽象类和模板方法模式
    可能你不知道的,关于自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/mylqm/p/13441435.html
Copyright © 2020-2023  润新知