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

 更新时间:2023年05月18日 10:07:53   作者:葬空吟  
Mysql在使用过程中经常遇到错误,都是本人在实际应用中处理检验过的,本文对常见错误出现的代码进行详细分析,下面这篇文章主要给大家介绍了关于MySQL查询出现1055错误的原因及解决方法,需要的朋友可以参考下

当SQL语句查询报1055错误时的解决方法

报错内容如下

请添加图片描述

报错原因

1.SQL语句中使用了group by,并且不需要分组的字段没有加上any_value()函数

2.MySQL数据库版本是大于5.7,报错信息中最后有一句sql_mode=ONLY_FULL_GROUP_BY,是因为MySQL数据库的配置中sql_mode包含ONLY_FULL_GROUP_BY,导致使用group by会报错

ONLY_FULL_GROUP_BY 含义:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。在严格模式下,不要让GROUP BY部分中的查询指向未选择的列,否则报错。

解决办法

解决办法共计3种,两种需要改配置,一种不需要

1.不修改任何配置文件,但给不需要分组的字段上加上any_value()函数

SELECT any_value(id),value FROM table_name group by value;

这种方法不需要改配置,但是每条使用group by的SQL语句都要加上any_value()函数

2.临时更改配置,下次重启电脑或者MySQL服务时会失效

首先在数据库中查询下列代码

select @@global.sql_mode

得到如下结果:

请添加图片描述

发现里面有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语句,应该会可用了

如果不可用,再执行下列两条语句:

select @@sql_mode

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

就可以了

3.永久更改配置,下次重启电脑或者MySQL服务时不会失效

第一步,先运行下列语句

select @@sql_mode

第二步,打开MySQL的配置文件(window的时my.ini,一般会在安装目录的根目录,Linux是my.cnf,一般会放

在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找)

第三步,在配置文件中找到 [mysqld],在他下面填入

[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

停止mysqlsystemctl stop mysql或者net stop mysql

重启mysqlsystemctl restart mysql或者net start mysql

window用户可以在服务中重启MySQL:win+R,输入services.msc,点确定找到mysql服务,重启即可解决问题

总结

到此这篇关于MySQL查询出现1055错误的原因及解决方法的文章就介绍到这了,更多相关MySQL查询报错1055内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL查询全部数据集结果不一致问题解决方案

    MySQL查询全部数据集结果不一致问题解决方案

    最近出现一个很奇怪的MySQL问题,使用不同select语句查询全部数据集居然得到不同的记录数
    2012-11-11
  • 分析MySQL中优化distinct的技巧

    分析MySQL中优化distinct的技巧

    这篇文章主要介绍了分析MySQL中优化distinct的技巧,主要是通过减少本地扫描的次数来进行优化的方法,需要的朋友可以参考下
    2015-05-05
  • mac 装5.6版本mysql 设置密码的简易方法

    mac 装5.6版本mysql 设置密码的简易方法

    这篇文章主要介绍了mac 装5.6版本mysql 设置密码的简易方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • mysql利用覆盖索引避免回表优化查询

    mysql利用覆盖索引避免回表优化查询

    这篇文章主要给大家介绍了关于mysql如何利用覆盖索引避免回表优化查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • mysql中的int类型对应于java中的Long类型详解

    mysql中的int类型对应于java中的Long类型详解

    这篇文章主要介绍了mysql中的int类型对应于java中的Long类型,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 阿里云安装mysql数据库出现2002错误解决办法

    阿里云安装mysql数据库出现2002错误解决办法

    这篇文章主要介绍了阿里云安装mysql数据库出现2002错误解决办法,需要的朋友可以参考下
    2017-04-04
  • Windows下简单的Mysql备份BAT脚本分享

    Windows下简单的Mysql备份BAT脚本分享

    朋友说在windows下面用bat命令备份失败,他一时找不到问题所在,于是找我帮忙查看下。查找后解决了该问题,想着总结下来,所以这篇文章主要跟大家分享了一个在Windows下简单的Mysql备份BAT脚本,需要的朋友可以参考下。
    2017-03-03
  • mysql 5.7.21解压版安装配置方法图文教程(win10)

    mysql 5.7.21解压版安装配置方法图文教程(win10)

    这篇文章主要为大家详细介绍了win10下mysql 5.7.21解压版安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 详解MySQL如何保证数据一致性

    详解MySQL如何保证数据一致性

    对于一个数据库而言,除了数据的持久性、不丢失之外,一致性也是非常重要的,不然这个数据是没有任何意义的,在使用MySQL时,数据不一致的情况也可能出现,所以,本文就来看看MySQL是如何保证数据一致的,需要的朋友可以参考下
    2024-01-01
  • mysql日志系统redo log和bin log介绍

    mysql日志系统redo log和bin log介绍

    这篇文章主要介绍了mysql日志系统redo log和bin log介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08

最新评论