• MYSQL---Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column '


    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',''));

    二、尝试第二种方案(推荐修改My.ini)

    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.ini 里面设置(Linux是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'

    注意:mysql8不支持NO_AUTO_CREATE_USER,所以修改文件时候要删除它。

  • 相关阅读:
    多线程GCD
    根据UITouch 自定义手势
    KVC在数据解析中的应用
    oc 文件读写操作
    oc 字典应用实例-城市查询省份
    oc 字典应用实例-成绩科目排序
    oc 数组应用实例-验证码
    协议 protocol
    概念杂记
    OC 类的继承 方法重载重写
  • 原文地址:https://www.cnblogs.com/hujesse4/p/13964864.html
Copyright © 2020-2023  润新知