解决MySql数据库报1055报错--ONLY_FULL_GROUP_BY的问题


前言

执行mysql的SQL语句的时候,navicat报1055错误


一、1055错误

MySql 5.7以上,sql_mode中的“only_full_group_by”是默认开启的,修改 sql_mode 参数即可
1.如果是windows系统,则把 MySql 中的my.ini中的sql_mode配置项修改则可,把only_full_group_by项删除,如果是Linux则在my.cnf中
2.如果配置项中没有sql_mode项,通过sql语句修改

select @@sql_mode

将查到的值去掉only_full_group_by项,将其他项添加到my.ini配置文件中
注意事项:
1.添加内容到my.ini文件时,需要停止服务,添加完成后在开启服务
2.因为数据库的原因,导致查询的sql-mode的值可能不一样,所以尽量以自己的查询结果为准,下面是我的

sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启服务后,再次访问一般就好了


总结

至此,本文章结束

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
报错 "only_full_group_by" 是 MySQL 数据库中的一个错误。它是由于在使用 GROUP BY 子句时,SELECT 语句中的列未在聚合函数中进行处理而导致的。 解决这个问题可以通过以下几种方式: 1. 使用聚合函数处理所有未在 GROUP BY 子句中的列:将 SELECT 语句中的列名添加到 GROUP BY 子句中或者将它们包装在相应的聚合函数(如 COUNT、SUM、MAX 等)中。 例如,如果你有以下的 SELECT 语句: ```sql SELECT id, name, SUM(quantity) FROM orders GROUP BY id; ``` 你可以修改为: ```sql SELECT id, name, SUM(quantity) FROM orders GROUP BY id, name; ``` 或者将未在 GROUP BY 子句中的列使用聚合函数处理: ```sql SELECT id, MAX(name) AS name, SUM(quantity) FROM orders GROUP BY id; ``` 2. 禁用 `ONLY_FULL_GROUP_BY` 模式:在会话级别或全局级别上修改 MySQL 配置,将 `sql_mode` 中的 `ONLY_FULL_GROUP_BY` 移除或替换为空字符串。请注意,这可能会导致其他潜在问题,因此需要谨慎使用。 例如,你可以执行以下 SQL 语句来禁用 `ONLY_FULL_GROUP_BY` 模式: ```sql SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); ``` 3. 更新 MySQL 版本:如果你正在使用较旧的 MySQL 版本,可以尝试升级到较新的版本。较新的 MySQL 版本通常对 SQL 标准的支持更好,可能会解决问题。 请注意,在进行任何更改之前,请备份你的数据库以防意外发生。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值