zoukankan      html  css  js  c++  java
  • 关于Mysql5.7高版本group by新特性报错

    一个项目的开发到测试上线运营,团队对项目的管理不成熟会影响项目的开发效率。由于项目是我刚接手,独自在Centos搭建PHP环境,所以就考虑使用高版本,选择了Mysql5.7,本地开发环境还是Windows继承环境,PHP环境和Centos是统一的7.0,但是Mysql版本是5.3的,本地开发一切顺利,到了Centos下出现了一些问题,这就是因为开发环境和测试|线上环境不一致导致的。

    mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by

    看一下ONLY_FULL_GROUP_BY的意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。

    接下来直接说一下解决问题的过程。

    先进入Mysql客户端执行命令

    select @@GLOBAL.sql_mode;
    +--------------------------------------------------------------------------------------------------------------------------------------+
    | @@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 
    +--------------------------------------------------------------------------------------------------------------------------------------+

    看到上面反悔的命令行第一段--->   ONLY_FULL_GROUP_BY;

    网上给出的解决方法有大概三种,一种是在程序代码的语句里,给查询条件的列增加聚合函数,如果你这样做,那么就很麻烦了,而且以在开发过程中使用group by的语句都要下功夫,这个方法就算了。

    推荐直接关掉这个配置项。

    那么怎么把这一项关掉呢,直接在客户端执行命令关掉不就可以了么,set @@global.sql_mode = .......,执行成功,然后执行命令查看一下,果然第一项不在了,然后我们再重启一下mysql服务,再次查询,还在..哈哈。。

    那么,接下来放绝招了,还是从Mysql的配置文件下手吧。

    找到my.cnf,编辑它~把以下命令放到合适位置,重启mysql 服务,OK~报错没啦~

    [mysqld]
    #sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    千万要注意的是,网上很多方案都差不多,但是就是成功不了,原因是网上很多帖子给出的方案都是前面多了一个set,按照上面的方法就可以了~

    #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       //前面多了个set 是不对滴~
  • 相关阅读:
    自学大数据初期
    研究正则表达式
    智能穿戴设备移动APP端与外设数据传输协议
    集成Facebook SDK
    Core Data数据库迁移
    用Time Machine做更换电脑工具
    iOS Automation Test
    编译libcore-amr静态库
    解决CentOS 7安装zabbix 3.0 无法启动zabbix-server的问题[segfault at 18 ip 00007f78842b4bd0 sp 00007fff1995a818 error 4 in libpthread-2.17.so[7f78842ab000+16000]]
    CentOS 7 安装Percona,Xtrabackup
  • 原文地址:https://www.cnblogs.com/wt645631686/p/7675830.html
Copyright © 2011-2022 走看看