zoukankan      html  css  js  c++  java
  • In aggregated query without GROUP BY, expression #1 of SELECT list contains

    起源

            最近发下很多人在我的python课程下面提问,关于执行python 定时器Job会报错 如下

    In aggregated query without GROUP BY, expression #1 of SELECT list contains

    出现原因

            在MySQL5.7.5后,默认开启了ONLY_FULL_GROUP_BY,所以导致了之前的一些SQL无法正常执行,其实,是我们的SQL不规范造成的,因为group by 之后,返回的一些数据是不确定的,所以才会出现这个错误。

    解决方案

            我们知道了原因,就可以去找到对应的解决方法,主要都是修改sql_mode

    方案一

            直接修改 /etc/my.cnf ,找到sql-mode的位置,去掉ONLY_FULL_GROUP_BY,然后需要重启mysql 服务,大致如下就可以了

    [mysqld]
    sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO

    方案二

            这种方法可以不用重启mysql服务,但是服务重启之后设置就没有用了,适合临时解决治标不治本。这种方法修改会话变量。主要操作如下(在mysql命令行执行)

    #第一步 查看目前sql_mode 的配置,可以看到值中有 only_full_group_by 
    show variables like '%sql_mode';
    
    #第二步 将看到的值中的only_full_group_by去掉,剩下的字符串重新设置,也可以直接复制如下的
    set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';


    大家根据自己的情况选择适合自己的方法解决问题


    原文地址:In aggregated query without GROUP BY, expression #1 of SELECT list contains
    标签:mysql   

    智能推荐

    即学即码 分享 PHP、Linux、Python、Go,大数据,机器学习,人工智能等技术。马上学习码上学会。www.jixuejima.cn 公众号:learn_master
  • 相关阅读:
    愚公移山
    唐雎不辱使命
    渡易水歌
    论语
    智子疑邻
    学弈
    SQL Merge 语法 单表查询
    大道之行也
    Java开发人员最常犯的10个错误
    模拟Spring手撕一个简单的IOC容器
  • 原文地址:https://www.cnblogs.com/apanly/p/14599292.html
Copyright © 2011-2022 走看看