zoukankan      html  css  js  c++  java
  • #1055 ... sql_mode=only_full_group_by

    sql_mode=only_full_group_by


    版权声明:本文为参考多篇博主文章,略作测试修改。

    参考文章:

       的《5分钟学会MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案》。

       的 《MySql版本问题sql_mode=only_full_group_by

       的 《Mysql group by this is incompatible with sql_mode=only_full_group_by


    一、错误信息:

    使用左连接进行group by 操作时,报如下错误:

    #1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated 
    column 'b.id' which is not functionally dependent on columns in GROUP BY clause; 
    this is incompatible with sql_mode=only_full_group_by


    二、错误翻译:

    #1055-选择列表的表达式3不在GROUP BY子句中,
    并且包含未聚合的列“b.id”,
    该列在功能上不依赖GROUP BY子句中的列;这与SQL模式=仅“完整”GROUP BY不兼容。


    三、错误原因:

    MySQL 5.7,实现检测功能的依赖。
    如果启用了ONLY_FULL_GROUP_BY SQL模式(默认),
    MySQL拒绝选择列表查询,条件,或命令列表是指非聚合列既不是GROUP by子句中指定功能也不依赖他们。
    (5.7之前,MySQL不检测功能的依赖和ONLY_FULL_GROUP_BY在默认情况下不启用。
    ONLY_FULL_GROUP_BY,对于GROUP BY聚合操作,
    如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,
    也就是说查出来的列必须在GROUP BY后面出现否则就会报错,或者这个字段出现在聚合函数里面。


    四、解决:

    (1)可以先查看下mysql版本:

    select version();
    结果:5.7
    .14-log

    (2)再使用select @@GLOBAL.sql_mode,查看ONLY_FULL_GROUP_BY是否启用。

    结果显示示例:

    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

    结果中有ONLY_FULL_GROUP_BY,代表被启用。

    (3)把这一项去掉:

    set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

    (4)或者修改配置文件
      1、打开配置文件mysql.cnf

    sudo vi /etc/mysql/mysql.cnf

      2、添加配置

    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、重启mysql

    sudo service mysql restart

    (5)重新查看sql_mode,看是否修改成功。

    SELECT @@sql_mode;

    (6)测试

    执行sql语句,看是否还报错。


  • 相关阅读:
    绑定class -vue
    二叉树按层打印,并且按层换行的方法
    curl相关知识
    python创建简单的http服务器
    有关rides数据库的想法
    java模拟实现有序表操作
    php静态方法
    php关闭浏览器不终止运行
    php读取图片以二进制输出
    借用face++人脸识别,来识别年龄
  • 原文地址:https://www.cnblogs.com/gyfluck/p/11690236.html
Copyright © 2011-2022 走看看