MySQL报错1055 – Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated 解决方法

MySQL报错1055 – Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated 解决方法

1、问题复现:

  今天在进行数据迁移时,使用Navicat连接数据库进行连接时,由于 SQL语句中使用了 group by分组函数,结果报了如下错误:

<span>MySQL报错1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated 解决方法</span>

2、产生原因

  产生原因说是,在MySQL数据库版本为5.7以上的版本,默认开启了 ONLY_FULL_GROUP_BY SQL模式,在此模式下,对于group by操作,如果在select语句中的查询列没有在group by中出现,那么这个SQL就是非法的,因为列不在group by语句中,所以设置了sql_mode=only_full_group_by的数据库,在使用group by时就会报错。

3、问题解决

  既然是 MySQL配置问题,找到了原因,就好对症下药进行解决了。

方法一:

  在Navicat中,输入下列SQL语句进行查询:

SELECT @@GLOBAL.sql_mode;

  查询结果如下:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

  通过上面的查询结果,可以看到 开启了 ONLY_FULL_GROUP_BY 模式,这里第一种解决方案就是,去除 ONLY_FULL_GROUP_BY,重新设置值。

  解决方法如下:

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

  执行完上面的SQL语句之后,再次执行报错的SQL语句,发现可以正常运行了。

方法二:

  除了上面的手动设置sql_mode值之外,还可以在 MySQL 的配置文件中进行设置。

  1、对于 Linux系统,进到 /etc/my.cnf 文件下,查询sql_mode字段,由于在配置文件中未找到这个关键字,所以我在

    [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

   添加完之后,保存退出,重启 MySQL 即可生效。

  2、对于windows系统,进行 MySQL安装目录下,找到 my.ini 文件,同样在配置文件中搜索sql_mode关键字,

        若未搜索到,则需要在  [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

   添加完毕之后,保存退出,然后重启一下 MySQL 服务即可生效。

参考链接:

    https://www.cnblogs.com/52lnamp/p/9294330.html

    https://www.cnblogs.com/chancy/p/10026097.html

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

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

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


相关推荐

  • 心血漏洞(OpenSSL升级)[通俗易懂]

    心血漏洞(OpenSSL升级)[通俗易懂]查看系统OpenSSL版本:opensslversion,查看该版本是否存在心血漏洞,受影响版本为:1.0.1—1.0.1f/1.0.2Beta1下载最新的OpenSSL安装包并上传到服务器下载地址:https://www.openssl.org/安装依赖:yuminstall-ygcczlib-develpam-devel开启telnet服务yum-yinstalltelnet-serversed-i”s/yes/no/g”/etc/xine.

    2022年7月17日
    20
  • MYSQL库,表,记录的基本操作

    数据库操作1、显示数据库默认数据库:mysql-用户权限相关数据test-用于用户测试数据information_schema-MySQL本身架构相关数据2、创建数据库3、使

    2022年3月29日
    32
  • request.getattribute()用法_getrequesturl

    request.getattribute()用法_getrequesturlpackageliuliking;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.Http

    2022年9月24日
    3
  • java——Scanner中nextLine()方法和next()方法的区别

    java——Scanner中nextLine()方法和next()方法的区别        遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码:importjava.util.Scanner;//Scanner中nextLine()方法和next()方法的区别publicclassScannerString{publicstatic…

    2022年4月27日
    45
  • opencv中scalar_opencv ffmpeg

    opencv中scalar_opencv ffmpegMat类中的Scalar()成员有什么用呢?先不急着看资料,看下有什么结果出现吧:先将里边的值设为0[html]viewplaincopy#include&amp;amp;lt;opencv2/core/core.hpp&amp;amp;gt;#include&amp;amp;lt;opencv2/imgproc/imgproc.hpp&amp;a

    2022年9月25日
    3
  • eclipse导入maven工程及maven的安装「建议收藏」

    eclipse导入maven工程及maven的安装「建议收藏」1、下载maven,解压。2、配置环境变量新建:M2_HOME:D:\indoorLocation\apache-maven-3.3.9Path:;%M2_HOME%\bin;3、验证:mvn-v,出现maven路径版本等信息说明maven安装成功4、配置maven本地仓库在路径D:\indoorLocation\apache-maven-3.3.9\conf下的setti

    2022年5月31日
    37

发表回复

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

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