MySQL 报错1055

article/2025/9/14 7:54:16

一、问题描述

SELECT * FROM tbluser GROUP BY sex

  当我以这条语句进行数据库查询的时候,报了个错:

> 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 
'ceb.tbluser.uid' which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by

  在网上查询之后,发现是在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。

ONLY_FULL_GROUP_BY:ONLY_FULL_GROUP_BY要求select语句中查询出来的列必须是明确的(其他语句也是一样)。

  以  SELECT name FROM tbluser GROUP BY age  为例:name 必须是聚集函数或者在group by后的表达式age中,并且age中必须包含主键,否则也会报错。
  什么意思呢?也就是说要么前面的条件是个聚集函数,要么 GROUP BY 后面就必须包含主键。

  但是这样的话, 就很容易出现问题。因为大家习惯的mysql语句,都会有group by 字段。但是查的时候如果用不到这个字段,一般是不会写进去的。况且很多自动生成的sql 里面都会这样。你的sql 很有可能会出大问题。

二、解决办法

关闭ONLY_FULL_GROUP_BY

  首先用管理员身份运行cmd,进入到mysql的安装目录下的bin目录,使用管理员用户登录mysql数据库。
  然后使用命令 mysql –h localhost –uroot –p ,其中-h是指定主机名或IP地址, -u是指定用户, -p是使用密码登录。
在这里插入图片描述
  我这没有设置密码,所以在 Enter password 那里直接点的回车。

  然后使用命令select @@global.sql_mode; 可以查看全局sql_mode的值。注意:这里“;”是不能省略的。
在这里插入图片描述
  然后再输入 set @@global.sql_mode=(select replace(@@global.sql_mode,‘ONLY_FULL_GROUP_BY’,’’)); 可以修改@@global.sql_mode。
在这里插入图片描述
  之后再重新连接一下数据库,运行语句,就OK了。

  但是这种方法只能解决一时,一旦重启数据库,就又会回去的。

三、一劳永逸

设置sql_mode

  可以通过修改配置文件的方式设置sql_mode,这样在数据库重启之后sql_mode的值也不会改变。
首先找到my.ini文件。
在这里插入图片描述
  打开该文件,在 [mysqld] 下面加上:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

  我这里是只去掉了ONLY_FULL_GROUP_BY。如果放在**[mysqld]**里不起作用,那就加在最下面。

  然后重启一下mysql服务就行了。

  另外附加一些在网上看到的几种常见的sql_mode的介绍:

  • ONLY_FULL_GROUP_BY:出现在select语句、HAVING条件和ORDER BY语句中的列,必须是GROUP
    BY的列或者依赖于GROUP BY列的函数列。
  • NO_AUTO_VALUE_ON_ZERO:该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。
  • STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
  • NO_ZERO_IN_DATE:这个模式影响了是否允许日期中的月份和日包含0。如果开启此模式,2016-01-00是不允许的,但是0000-02-01是允许的。它实际的行为受到
    strict mode是否开启的影响1。
  • NO_ZERO_DATE:设置该值,mysql数据库不允许插入零日期。它实际的行为受到 strictmode是否开启的影响2。
  • ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时MySQL返回NULL
  • NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户
  • NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
  • PIPES_AS_CONCAT:将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似
  • ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

http://chatgpt.dhexx.cn/article/9224clws.shtml

相关文章

mac mysql 1055_MySQL错误1055

问题描述:在MySQL数据库下,执行SQL插入语句报错。错误信息如下: 错误原因:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。 ONLY_FULL_GROUP_BY:ONLY_FULL_GROUP_BY要求select语句中查询出来的列必须是明确的(…

MySQL 错误代码:1055 解决方案(推荐!!)

MySQL 错误代码:1055 解决办法 一、 MySQL版本二、 问题描述1. 问题描述2.ONLY_FULL_GROUP_BY-SQL示例 三、解决办法1.方法一2.方法二(临时)3.方法三(永久) 四、sql_mode常用值 一、 MySQL版本 MySQL版本:8.0.11 二、…

MySQL 出现1055错误 this is incompatible with sql mode=only full group by 的解决办法

文章目录 一、打开MySQL8.0 Command Line Client二、找到MySQL的my.ini文件路径三、修改my.ini里面的内容 前言 在学习过程中出现的问题:IDEA与Navicat出现不兼容的情况 会弹出1055的错误,这种错误通常在mysql 5.7以上的版本才会出现 1055 Expression #…

MySQL查询出现1055错误的解决方法

当SQL语句查询报1055错误时的解决方法 报错内容如下 报错原因 1.SQL语句中使用了group by,并且不需要分组的字段没有加上any_value()函数 2.MySQL数据库版本是大于5.7,报错信息中最后有一句sql_modeONLY_FULL_GROUP_BY,是因为MySQL数据库的…

1055 习题4-9-3 逆序输出正整数各位上数字

题目描述 输入一个不多于5位的正整数,按逆序输出各位上的数字,末尾换行。 注意:确保输入的正整数的位数不多于5。 输入 一个不多于5位的正整数。 输出 逆序输出各位上的数字,中间以空格分隔。 注意末尾的换行。 样例输入 2143 样…

IDEA破解后老是出现agent弹窗问题

第一步:在1这个路径下早到2这个文件 2.用解压软件提取2这个文件META-INF里面的important.txt放到上面1这个目录下(这里使用的是7z解压)

Intellij IDEA 破解方法和地址

IntelliJ IDEA是来自捷克的Jetbrains公司开发的Java开发工具(完爆Eclipse/MyEclipse)。有旗舰版和社区版两大版本,相对社区版而言旗舰版的功能更加丰富。官网提供了两个版本之间差异的详细比较。擅长企业级应用、移动应用以及Web应用开发。 支持MacOS,Windows7,Lin…

idea破解办法

在安装后启动的时候,Activate new license with选择License server,填上http://idea.iteblog.com/key.php,如图所示: 点击Activate,然后就搞定了。

Intellij idea破解以及运行优化

Intellij idea破解以及运行优化 idea 破解: 方式一:服务器破解,这种方式比较快速,但是很不稳定,所以不推荐 方式二:在校学生或者教师都可以免费申请,申请网址:https://www.jetbrain…

IDEA破解后无法启动

在网上找了破解IDEA的方法 原文:https://blog.csdn.net/qq_38637558/article/details/78914772 ①到这个地方下载 IntelliJ IDEA 注册码:http://idea.lanyus.com/ ②然后将这个jar包放入bin目录下,bin目录下,你的idea安装后的…

Intellij idea破解2017

最开始的时候intellij用得是社区版,因为博主没有钱去买专业版。。。但是后来发现社区版的功能确实弱了很多,比如流弊闪闪的Diagrams功能就没有…比如社区版不支持web项目,想起个tomcat跑个web项目都没法搞。于是,博主重新下载了个…

IDEA破解

① 到这个地方下载 IntelliJ IDEA 破解补丁:http://idea.lanyus.com/ 就是这个jar包:JetbrainsCrack-2.6.10-release-enc.jar ② 然后将这个jar包放入bin目录下,bin目录下,你的idea安装后的bin目录下 ③ 然后还是在这个bin目录…

IntelliJ IDEA破解

今天写个IDEA破解,废话不多说,直接给网址 官网:https://www.jetbrains.com/idea/ 破解注册码:http://idea.lanyus.com/ 里面有永久破解,还有注册码,可你根据你的喜爱,来选择,今天…

如何卸载 IDEA 破解补丁 Betterintellij ?

如何卸载 IDEA 破解补丁 Betterintellij ? 开始卸载 Betterintellij 补丁 这个补丁被黑客篡改过,有安全风险,强烈建议小伙伴们卸载掉,以免对自己造成损失。怎么卸载呢?跟着下文操作即可。 开始卸载 Betterintellij 补丁 1、在 …

idea破解之后查看使用日期

help的里面很多按钮,重置查看使用日期

idea破解失败无法打开

今天在学习使用spring boot 写接口的时候发现idea过期了然后查了一下如何破解,破解到了重启这一步之后就无法打开了,重装了很多次也没有用之后查了很久资料终于解决了,写个博客记录一下。 首先我是通过idea修改了idea64.exe.vmoptions文件 这…

IntelliJ IDEA下载安装教程

目录 友情提醒第一章、IDEA软件下载1.1)官网下载 第二章、IDEA软件安装2.1)以"ideaIU-2018.3.3.exe"为例3.2)启动IDEA软件 友情提醒 点击文章目录可以跳转 第一章、IDEA软件下载 IDEA 全称 IntelliJ IDEA。在智能代码助手、代码…

idea破

百度下载一个 JetbrainsCrack-2.6.2.jar 破解补丁。放在你的安装idea下面的bin的目录下面。 下载链接:http://idea.lanyus.com/ 在安装的idea下面的bin目录下面有2个文件 : 一个是idea64.exe.vmoptions,还有一个是idea.exe.vmoptions 配置 …

Idea2023安装教程

Idea2023安装教程 下载方式Idea2023安装激活码验证添加中文 下载方式 1.百度网盘 链接:https://pan.baidu.com/s/1K2DP8sXsiC0E8PnwFeSQLQ?pwdoiv1 提取码:oiv1 2.官网下载 下载地址:https://www.jetbrains.com/ Idea2023安装 1.双击图标…

2021 IDEA最新版安装教程(可激活)

评论区 由于今天重新安装了系统,很多软件需要重装,这里给大家分享一下,如何进行IDEA最新版本的安装。 1:下载最新软件 官网地址:IDEA官网地址。 进去之后点击Download,进行下载。 这里可以选择不同的版本…