zoukankan      html  css  js  c++  java
  • mysql5.7之only_full_group_by

    mysql进入5.7版本之后,默认开启sql_mode的only_full_group_by模式。

    影响在于:

      sql语句中如果有group by部分,那么select部分不能出现group by框定的字段以外的字段(聚合函数除外)

    举个例子:

      select count(*),ORG_NAME,ORG_CODE from PUB_ORGAN group by ORG_CODE

      这个sql在5.7严格模式下就会执行报错,因为ORG_NAME不在group by字段中包含

    报错情况:

    1.ERROR 1055 (42000): Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ORG_NAME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    问题根源:

    -- 使用navicate执行sql语句
    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

    修改方案:

    (1)全局修改

     

    #查找mysql初始化文件my.cnf
    ps -ef | grep mysql
    #找到mysqld脚本运行参数defaults-file,这里假设是:--defaults-file=/apps/my.cnf

    修改文件内容
    搜索sql_mode把ONLY_FULL_GROUP_BY删除、保存、重启mysql

    (2)线上修改

    -- 管理员登录
    -- 查询当前上下文
    SELECT @@GLOBAL.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
    
    -- 修改当前上下文
    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 ';

    参照网址:

      https://blog.csdn.net/wangyunfeis/article/details/77911704

  • 相关阅读:
    在非MFC的win 32程序里面能够使用CString类
    一 VC2008环境中ICE的配置
    二 示例程序一
    三 ICE开发初级研究
    VC断点不可用的问题
    Ice笔记-利用Ice::Application类简化Ice应用
    GetCurrentDirectory、SetCurrentDirectory和GetModuleFileName
    Xcopy参数介绍
    COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)
    JackSon fasterxml学习
  • 原文地址:https://www.cnblogs.com/chendeming/p/9012785.html
Copyright © 2011-2022 走看看