5分钟学会MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案[通俗易懂]

5分钟学会MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案[通俗易懂]5分钟学会MySQL-"thisisincompatiblewithsql_mode=only_full_group_by"错误解决方案前言:一、原理层面这个错误发生在mysql5.7版本及以上版本会出现的问题…

大家好,又见面了,我是你们的朋友全栈君。

                                                     5分钟学会MySQL-

          “this is incompatible with sql_mode=only_full_group_by”错误解决方案

前言:

       一、原理层面

       这个错误发生在mysql 5.7 版本及以上版本会出现的问题:

       mysql 5.7版本默认的sql配置是:sql_mode=”ONLY_FULL_GROUP_BY”,这个配置严格执行了”SQL92标准”。

       很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。

        

        二、sql层面

        在sql执行时,出现该原因:

        简单来说就是:输出的结果是叫target list,就是select后面跟着的字段,还有一个地方group by column,就是

        group by后面跟着的字段。由于开启了ONLY_FULL_GROUP_BY的设置,所以如果一个字段没有在target list 

        和group by字段中同时出现,或者是聚合函数的值的话,那么这条sql查询是被mysql认为非法的,会报错误。

     

  一、查看sql_mode的语句如下

select @@GLOBAL.sql_mode;

  二、解决方案-(推荐解决方案二)

  ①解决方案一sql语句暂时性修改sql_mode

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

      问题:

              重启mysql数据库服务之后,ONLY_FULL_GROUP_BY还会出现。

  ②解决方案二:完美解决方案。

   需修改mysql配置文件,通过手动添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性,

   my.cnf位于etc文件夹下,vim下光标移到最后,添加如下:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

       重启mysql服务,顺利解决。 

                       Now ~ ~ ~写到这里,就写完了,如果有幸帮助到你,请记得关注我,共同一起见证我们的成长

小结

谢谢观赏,我叫猿医生。

猿友推荐:正在奔跑的程序猿

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141117.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java中将字符串分割转为List

    java中将字符串分割转为ListStringstr=”a,b,c,d”;String[]arr=str.split(“,”);List<String>list=Arrays.asList(str);

    2022年5月15日
    45
  • 树莓派4B安装tensorflow2.0[通俗易懂]

    树莓派4B安装tensorflow2.0[通俗易懂]这个GitHub上可以下载到tensorflow2.x:https://github.com/lhelontra/tensorflow-on-arm/releases我就拿我下载的举例子吧:我下载的是这个版本的:tensorflow-2.0.0-cp37-none-linux_armv7l.whl1、把下载的这个tensorflow-2.0.0-cp37-none-linux_armv7l.whl文件放进树莓派里边,cd到你拖进的那一目录下(我是拖到Desktop,所以是:cdDesktop),命令行

    2022年6月12日
    47
  • bt3 u盘版安装教程_bt3下载中文版下载

    bt3 u盘版安装教程_bt3下载中文版下载安装bt3u盘版在我们生活中非常常见,使用简单、方便,为了安装bt3u盘版,今天推荐给大家的安装bt3u盘版,操作简单,适用于绝大部分用户使用bt3u盘版下载准备工具Bt3程序U盘电脑第一步首先格式化U盘,选择FAT32方式。打开下载好的文件,将下图圈内的两个文件拷贝到U盘bt3u盘安装电脑图解-1点击【运行】,或者点windows+R,输入“CMD”进入,依次输入以下命令输入“U盘盘符”进入U…

    2022年10月1日
    2
  • 【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]

    【腾讯云】记录一次Could not connect to SMTP host: smtp.163.com, port: 25的解决办法[通俗易懂]问题描述最近准备将一个项目发布到腾讯云,在本地所有的功能都能够实现的很好,但是一到腾讯云上面就出现了一个问题:错误报告内容:CouldnotconnecttoSMTPhost:smtp.163.com,port:25翻译起来就是:不能连接到smtp.163.com,因为25号端口的原因。问题解决这是因为腾讯云(阿里云)基于安全考虑,会禁用25端口。………

    2022年10月4日
    3
  • Docker镜像自动执行脚本.sh

    Docker镜像自动执行脚本.sh由于博客现在在docker中部署的,每次打包部署,需要停掉旧容器->删除旧容器->删除镜像->将新的jar包打包成镜像->再次运行,每次发布都需要重复的执行此操作,于是想将所有命令写成脚本,jar包上传之后,运行脚本即可。命令:app_name=’java-blog’app_port=’8081’# 停止正在运行的容器echo ‘……stop container……’docker stop ${app_name}# 删除容器echo ‘…..

    2022年6月13日
    193
  • 如何开发股票软件情报分析功能101[通俗易懂]

    如何开发股票软件情报分析功能101[通俗易懂]各种情报铺天盖地,真真假假,虚虚实实,很多是庄家的托放出来的假情报。数据的解读也是一样,各种数据铺天盖地。但是东方大国股市的反应是真的,本周下跌趋势是真的。各种数据和情报分析就是很重要的功能,对于股票软件开发而言。哪些是假情报,哪些是真实的数据,就需要认真分析,不能一股脑传递给散户。突围!国内外局势正发生巨大转向!https://mu.mbd.ba…

    2022年6月21日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号