我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql不支持group by的解决方法小结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql不支持group by的解决方法小结

下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了。

一旦开启 only_full_group_by ,感觉,group by 将变成和 distinct 一样,只能获取受到其影响的字段信息,无法和其他未受其影响的字段共存,这样,group by 的功能将变得十分狭窄了

only_full_group_by 模式开启比较好。

因为在 mysql 中有一个函数: any_value(field) 允许,非分组字段的出现(和关闭 only_full_group_by 模式有相同效果)。

具体出错提示:

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

1.1. 1、查看sql_mode

select @@global.sql_mode;

1.2. 查询出来的值为:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2、去掉ONLY_FULL_GROUP_BY,重新设置值。

select @@global.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';
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';

2.1. 3、上面是改变了全局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';  

解决办法大致有两种:

一:在sql查询语句中不需要group by的字段上使用any_value()函数
这种对于已经开发了不少功能的项目不太合适,毕竟要把原来的sql都给修改一遍

3.1.

二:修改my.cnf(windows下是my.ini)配置文件,删掉only_full_group_by这一项
若我们项目的mysql安装在ubuntu上面,找到这个文件打开一看,里面并没有sql_mode这一配置项,想删都没得删。

当然,还有别的办法,打开mysql命令行,执行命令

select @@sql_mode;
这样就可以查出sql_mode的值,复制这个值,在my.cnf中添加配置项(把查询到的值删掉only_full_group_by这个选项,其他的都复制过去):

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;
如果 [mysqld] 这行被注释掉的话记得要打开注释。然后重重启mysql服务

注:使用命令

set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

这样可以修改一个会话中的配置项,在其他会话中是不生效的。  

如果上面的不够清楚可以参考下面的语句

进入mysql命令行 执行如下两句语句


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';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql不支持group by的解决方法小结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mysql高版本不兼容group by解决方案

mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by出现这个错误已导致在开发中mybatis的sql也运行不了原因:看一下group by的语法:select 选取分组中的
Mysql高版本不兼容group by解决方案
2020-12-24

php不支持mysqli的解决方法

本文将为大家详细介绍“php不支持mysqli的解决方法”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“php不支持mysqli的解决方法”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一
2023-06-06

浏览器不支持javascript的解决方法

这篇文章主要介绍浏览器不支持javascript的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!浏览器不支持javascript的解决办法:首先打开【Internet选项】对话框,选择【安全】选项卡;然后单击
2023-06-14

ph中gd库不支持jpg的解决方法

这篇文章主要介绍了ph中gd库不支持jpg的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP
2023-06-14

ie浏览器不支持javascript的解决方法

小编给大家分享一下ie浏览器不支持javascript的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!ie浏览器不支持javascript的方法:首先打开
2023-06-14

wordpress不支持中文用户名的解决方法

本文实例讲述了SCpSJwKIwordpress不支持中文用户名的解决方法。分享给大家供大家参考。具体分析如下: 解决这一问题的方法比较简单,我们只要在functions.php文件中加入如下代码即可:复制代码代码如下:function l
2022-06-12

Ubuntu14.04不支持U盘exfat格式的解决方法

这篇文章主要讲解了“Ubuntu14.04不支持U盘exfat格式的解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Ubuntu14.04不支持U盘exfat格式的解决方法”吧!  很
2023-06-13

高版本Mysql使用group by分组报错的解决方案

GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组,下面这篇文章主要给大家介绍了关于高版本Mysql使用group by分组报错的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2023-03-06

高版本Mysql使用group by分组报错的解决方案

mysql5.7版本以上对group by 分组有了新需求,要求group by 后的字段要与select后查询的字段一致,否则就会报错,报错信息如下:#1055 - Expression #1 of SELECT list is not
2023-03-06

让python 3支持mysqldb的解决方法

前言 在新的一年里祝大家前端都用ES6,php都用PHP7,Java都是JAVA9,python都是3。好了,下面进入本文的主要的内容,大家可能在python2.x中用习惯了mysqldb,但是在python3.x中已经不支持那个组件了。如
2022-06-04

解决node-webkit 不支持html5播放mp4视频的方法

原因: mp4似乎是有专利的影音格式。node-webkit不对其进行支持…… 似乎是。。 解决方法 : 在本地安装chrome浏览器,进行安装目录(例:c:GoogleChromeApplication37.0.2062.103),找到f
2022-06-04

win7不支持GIF图片打开的两种解决方法

其实这个真和Win7没关系,在XP的时代,GIF所用的LZW压缩算法是Compuserv所开发的一种免费算法。但是后来,GIF文件所采用的压缩算法忽然成了Unisys公司的专利,如果要开发生成(或显示)GIF文件的程序,则需向该公司支付版税
2023-05-29

linux不支持所有命令的解决办法

inux不支持所有命令怎么办?解决linux所有命令不能使用的问题 出现这个问题说明你的 /etc/profile 配置出现了问题,一般是因为path配置出现了问题。排除添加内容中的错误,然后重启一个新窗口执行执行 source /etc/
2022-06-04

编程热搜

目录