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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • eclipse中文插件如何安装_eclipse不显示svn插件

    eclipse中文插件如何安装_eclipse不显示svn插件1、在eclipse中下载插件,地址如下:Name:Subclipse1.2.x(Eclipse3.2+)   URL: http://subclipse.tigris.org/update_1.2.xName:Subclipse1.0.x(Eclipse3.0/3.1)   URL: http://subclipse.tigris.org/up

    2022年10月11日
    4
  • SpringMVC笔记(2)

    SpringMVC笔记(2)

    2021年11月12日
    46
  • k8s配置admission-plugins

    k8s配置admission-plugins

    2021年5月14日
    137
  • python错误和异常处理_python异常处理

    python错误和异常处理_python异常处理抛出异常Python使用raise语句抛出一个指定的异常。raise语法格式如下:raise[Exception[,args[,traceback]]]defdivision():”’功能:分苹果”’print(“\n=====================分苹果了=====================\n”)apple=int(input(“请输入苹果的个数:”))#.

    2022年10月9日
    1
  • PyCharm如何安装torch

    PyCharm如何安装torch运行Pycharm中的代码时候提示ModuleNotFoundError:Nomodulenamed‘torch’。试了很多种方法都不行,然后进入官网查了下具体的安装方法,附上网址添加链接描述。摘取一段放在这里供大家参考。#CUDA10.0pipinstalltorch===1.2.0torchvision===0.4.0-fhttps://download.pytorch.org/whl/torch_stable.html#CUDA9.2pipinstalltor

    2025年7月2日
    3
  • 0xc0000225无法进系统_win10系统出现0xc0000225无法进入系统的恢复方法

    0xc0000225无法进系统_win10系统出现0xc0000225无法进入系统的恢复方法win10系统出现0xc0000225无法进入系统的恢复方法?win10系统有很多人都喜欢使用,我们操作的过程中常常会碰到win10系统出现0xc0000225无法进入系统的问题。如果遇到win10系统出现0xc0000225无法进入系统的问题该怎么办呢?很多电脑水平薄弱的网友不知道win10系统出现0xc0000225无法进入系统究竟该怎么解决?其实不难根据下面的操作步骤就可以解决问题 第一步、…

    2022年6月26日
    48

发表回复

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

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