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

作者:葬空吟 时间:2024-01-13 04:05:54 

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

报错内容如下

MySQL查询出现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

得到如下结果:

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

发现里面有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服务,重启即可解决问题

来源:https://blog.csdn.net/m0_56118578/article/details/128930537

标签:查询,报错,1055
0
投稿

猜你喜欢

  • python实现高斯投影正反算方式

    2022-11-17 08:58:19
  • PHP实现对图片的反色处理功能【测试可用】

    2023-11-03 19:41:28
  • python中的数据结构比较

    2023-07-20 10:58:35
  • python 实现打印扫描效果详情

    2022-04-20 18:29:50
  • Python通过format函数格式化显示值

    2021-11-06 06:13:01
  • python 密码加密与解密的实现

    2023-07-31 04:32:38
  • 事件检测

    2009-04-11 18:03:00
  • Python实现简单登录验证

    2023-04-30 15:39:11
  • php时间戳格式化显示友好的时间函数分享

    2024-05-11 09:22:42
  • 基于jupyter代码无法在pycharm中运行的解决方法

    2023-09-15 06:46:38
  • python中的None与NULL用法说明

    2022-01-01 13:59:15
  • MySQL中in和exists区别详解

    2024-01-19 20:55:10
  • 自定义django admin model表单提交的例子

    2023-03-16 13:11:43
  • MySQL数据库的多种连接方式及工具

    2024-01-13 10:37:14
  • 使用Python爬虫爬取小红书完完整整的全过程

    2022-03-23 05:12:44
  • MySQL数据库中与 ALTER TABLE 有关的问题

    2009-01-14 11:57:00
  • 图文详解Python中模块或py文件导入(超详细!)

    2023-01-13 01:41:13
  • python使用paramiko模块实现ssh远程登陆上传文件并执行

    2021-01-09 00:35:03
  • php中$_GET与$_POST过滤sql注入的方法

    2023-07-13 14:38:12
  • python定向爬虫校园论坛帖子信息

    2022-02-18 19:46:29
  • asp之家 网络编程 m.aspxhome.com