MySQL高版本使用group by报错的解决办法
MySQL 5.7.5及以上版本启用了依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。而5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。
mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by
看一下ONLY_FULL_GROUP_BY的意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。
接下来直接说一下解决问题的过程。
先进入MySQL客户端执行命令
select @@GLOBAL.sql_mode;
看到上面返回命令行的第一段---> ONLY_FULL_GROUP_BY;
网上给出的解决方法有大概三种,一种是在程序代码的语句里,给查询条件的列增加聚合函数,如果你这样做,那么就很麻烦了,而且以在开发过程中使用group by的语句都要下功夫,这个方法就算了。
推荐直接关掉这个配置项。
那么怎么把这一项关掉呢,直接在客户端执行命令关掉不就可以了么,set @@global.sql_mode = .......,执行成功,然后执行命令查看一下,果然第一项不在了,然后我们再重启一下mysql服务,再次查询,还在..哈哈。。
那么,接下来放绝招了,还是从Mysql的配置文件下手吧。
找到my.cnf,编辑它~把以下命令放到合适位置,重启mysql 服务,OK~报错没啦~
[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
千万要注意的是,网上很多方案都差不多,但是就是成功不了,原因是网上很多帖子给出的方案都是前面多了一个set,按照上面的方法就可以了~
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
版权属于:。。。源 本文链接:https://www.findmyfun.cn/solutions-to-group-by-error-reporting-in-mysql-higher-version.html 转载时须注明出处及本声明。我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2py75w7904qok
相关文章
- 在MySQL中掌握数组类型的使用技巧(mysql中数组类型)
- MySQL Variables metadata_locks_cache_size 数据库 参数变量解释及正确配置使用
- 远程访问MySQL:简明指南(如何远程访问mysql)
- MySQL 数据行复制教程,详细讲解如何使用 MySQL 实现行数据的复制,并指导你如何优化表数据。(mysql复制行数据)
- MySQL使用带来的弊端(mysql弊端)
- MySQL灾难恢复方案实施研究(mysql灾备方案)
- 腾讯云 MySQL安装:简单实用的数据库方案(腾讯云mysql安装)
- 使用MySQL实现地理空间索引的方法(mysql地理空间索引)
- MySQL索引应用指南(mysql中使用索引)
- MySQL中使用逗号分隔子句的方法(mysql中以逗号分隔)
- JDBC在MySQL中如何使用(mysql中jdbc在哪)
- 插入的记录C程序实现MySQL查询插入记录(c mysql读出)
- MySQL中DDL命令的使用详解(mysql中ddl命令)
- MySQL中ASCLL函数的使用方法(mysql中ascll)
- 借助Brew,轻松启动Mysql(brew 启动mysql)
- CMD快速启动MySQL数据库的使用方法(cmd快速打开mysql)
- MySQL中常用加法函数的使用方法(mysql中加法函数)
- 如何使用MYSQLUSER创建和管理MySQL用户(MYSQL_USER)
- 如何在不同电脑之间传输MySQL数据库(mysql不同pc传输)
- MySQL下载完毕后的安装及使用方法(mysql下载完怎样使用)
- MySQL企业版下载,轻松搭建稳定高效数据库平台(mysql下载企业版)
- MySQL中如何使用上月1号函数(mysql上月1号函数)
- MySQL无法连接这些简单步骤帮你解决(mysql不能连接怎么办)
- MySQL查询多字段筛选数据(mysql不同字段查询)