zoukankan      html  css  js  c++  java
  • MYSQL---Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column '

    --数据库中插入数据或执行sql语句时一直报下面这个错误:
    Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' 
    which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    原因:这是数据库的sql_mode设置的有问题。Mysql可以支持不同的SQL模式,不同的SQL模式会有不同的语法,执行不同的数据校验简查。

    首先,可以先查看一下数据库现在的sql_mode的值,sql语句为:

    select version(), @@sql_mode;

    获取结果可能如下,不同的设置查询出来的有区别:

    然后可以使用如下语句,去设置自己需要的sql_mode.

    SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_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、去掉ONLY_FULL_GROUP_BY,重新设置值。

    set @@sql_mode =‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘;
    3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行:

    set sql_mode =‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘;
    或者:
    在my.cnf 里面设置
    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_mode 中去掉only_full_group_by

    传送门:https://blog.csdn.net/u012259256/article/details/56482218

  • 相关阅读:
    MT【105】待定系数算最大最小
    MT【103】二阶递推找规律
    MT【102】一个常见的因式分解公式
    MT【101】分配问题举例若干
    MT【100】经典计数之分配问题
    MT【99】2005联赛二试题我的一行解法
    Qt Creator键盘快捷键速查
    AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图
    图像开源代码
    c++实用技巧
  • 原文地址:https://www.cnblogs.com/louby/p/10672744.html
Copyright © 2011-2022 走看看