MySQL 8.x group by报错【已解决】

教程分享 (831) 2024-07-09 15:23:26

在我们使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_mode=only_full_group_by,在升级MySQL 5.7.x和8.x版本后十分常见,每次都是老长的一串出现

 

比如下面的就会报错

select id,aa from tab_test group by aa

 

如果改成这个样子:

select id,aa from tab_test group by id,aa

或者这个样子:

select aa from tab_test group by aa

就不会报错了。

当然,这样子随意的改动代码,我们可能就无法得到想要的信息了。

 

解决办法

MySQL命令行或者工具连接到MySQL,执行下面查询

select @@global.sql_mode;

查询结果

操作示例图-e57b6ae98fa54acfb20d4b069fe4d55f.png

每个人结果可能不同,但是一定有个ONLY_FULL_GROUP_BY的项目,复制出来,把这个项目去掉,然后添加到MySQL的cnf配置文件sql_mode=''里面,参考

[mysqld]

sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

 

修改完成后重启MySQL服务即可

 

 

https://www.leftso.com/article/2403291953554511.html

相关文章
在我们使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_mode=only_full_group_by,在升级MySQL 5.
测试数据 测试数据SQL: DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(10) UNSIGNED ...
MySQL 8创建数据库用户和之前的版本不一样,之前的版本参考这一篇。
表数据准备Table: Subject_Selection ​ Subject   Semester   Attendee --------------------------------- I...
mysql 5.7.9以后废弃了password字段和password()函数;authentication_string:字段表示用户密码,而authenti
运行篇命令:# docker run -d -v /jenkins/mysql55:/var/lib/mysql -p 3306:3306 --name mysql55 -e MYSQL_ROO...
having的用法having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前
centos7中mysql配置my.cnf字符集utf-8,mysql5.6中文乱码
mysql索引的使用基础知识摘录。
mysql 使用utf8mb4字符集后查询非常慢的解决办法
MySQL索引优化,MySQL索引类型,MySQL索引怎么用MySQL索引怎么创建这里将会通过一些简单得sql进行讲解
MySQL分页_MySQL分页语句_MySQ如何使用limit分页,本博客将会详细讲解mysql中的分页查询。讲清楚MySQL如何编写分页查询语句。
MySQL慢查询优化_MySQL慢查询排查_MySQL慢查询设置配置
在导入sql备份文件到MySQL数据库中,无论物理机安装MySQL还是docker环境安装的MySQL,思路是一样的。首先,登录进入MySQL如果是物理的,则直接执行命令mysql-u-p&gt...
centos6.5安装MySQL 5.6版本,并配置数据了链接数量数据库默认字符集utf8mb4支持Emoji表情4字节内容