Mysql5.7以上版本group by报错问题

问题描述

报错:

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘database_tl.emp.id‘ which is not functionally dependent on columns in GROUP BY clause;

this is incompatible with sql_mode=only_full_group_by

原因

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。

解决问题

检查版本

登陆mysql客户端

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.21    |
+-----------+
1 row in set (0.00 sec)
mysql> select @@GLOBAL.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                                         |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| 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 |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

看到上面反悔的命令行第一段--->   ONLY_FULL_GROUP_BY;

网上给出很多解决办法,经我的尝试,有时是不起作用;

彻底解决办法:

找到mysql的my.cnf文件在[mysqld]下边加入:

[mysqld]
character-set-server=utf8
max_connections=1000
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数据库就好了

原文地址:https://www.cnblogs.com/zbbiex/p/10310935.html

时间: 2024-07-29 03:41:55

Mysql5.7以上版本group by报错问题的相关文章

mysql5.7.17安装方式-与报错解决方式

mysql5.7.17安装方式-与报错解决方式 重点: 出错的地方:在于第三步,因为哪里要检查一下,需要安装微软的一些东西,如果直接跳过会导致后面配置的出错,死活配置不了. 卸载:进入注册表卸载,不然你直接到控制面板哪里会卸载不干净,导致你重新安装的时候出错. 勾选同意,然后点下一步. 然后根据个人需求选择一个安装,一般默认就可以了. 2.左边是你电脑上可以连接到mysql的软件,比如Visual Studio,Eclipse,PyCharm等,中间是需求的版本或者额外组件,右边是状态. 选择一

解决Windows10或者其他版本Windows Update报错的问题

最近更新系统,发现报错0x80248014,系统版本为redstone2(创意者更新). 总结发现,只要是windows各个版本自动更新报错的,如0x80开头的一系列错误,都可以通过如下步骤解决: 手工停掉自动更新服务 运行-services.msc 去路径C:\Windows\SoftwareDistribution,清空DataStore和Download两个文件夹下的全部内容 第一步停自动更新服务,是为了可以有权限删除如上2个文件夹的内容. 起自动更新,再次检查更新,即可解决问题.

IE对象最后一个属性后不要加逗号,否则在IE7及以下版本中会报错

某函数返回一个对象,如果在最后一个属性后加逗号,IE7及以下版本中会报错 正确代码: return{ top:rect.top-top, bottom:rect.bottom-top, left:rect.left-left, right:rect.right-left } 错误代码(IE8以上都不会报错) return{ top:rect.top-top, bottom:rect.bottom-top, left:rect.left-left, right:rect.right-left, }

ceph升级到10.2.3 版本启动服务报错:Unknown lvalue 'TasksMax' in section 'Service'

#### ceph软件包升级完成,执行命令重启服务 sudo systemctl restart [email protected]"$HOSTNAME" #### 故障现象 服务可以启动,启动后显示有报错信息: Nov 23 17:14:45 ceph-6-12 systemd[1]:        [/usr/lib/systemd/system/[email protected]:18] Unknown lvalue 'TasksMax' in section 'Service'

android expandlistview group imageview报错的解决办法

在expandListView的group中如果包含imageview发现,报错.提示无法将imageview转换成TextView.查看源码发现,SimpleExpandableListAdapter中有如下方法: private void bindView(View view, Map<String, ?> data, String[] from, int[] to) { int len = to.length; for (int i = 0; i < len; i++) { Tex

关于ECSHOP模板架设的服务器php版本过高报错的解决

1.admin/index.php admin/sms_url.php  ECSHOP模板 报错:Strict Standards: mktime(): You should be using the time() function instead in /data/web/ledetaoadmin/sms_url.php on line 31 $auth = mktime(); 替换为: $auth = time(); 报错:Strict Standards: Only variables s

关于ECSHOP模板架设的服务器php版本过高报错的解决方法(二)

ECShop安装之后,在后台发现一个错误,这个错误提示的意思:mktime()方法不带参数被调用时,会被抛出一个报错提示. ECShop安装之后,在后台发现一个错误提示: Strict Standards: mktime(): You should be using the time() function instead in :\wamp\www\dqzhubao.com\shinamondadmin\sms_url.php on line 31 Strict standards: mktim

IE8.0.6001这个版本执行JS报错

现场: OS  winserver 2008 IE8.0.6001.18702   JS报错,不能登陆 OS  XP   IE8.0.6001.18702CO     JS报错,不能登陆 公司测试: OS  WIN7  IE8.0.7601.17514  正常. OS  winserver 2008 R2  IE8.0.6001.19621 一开始不能登陆,设置后正常. OS  winserver 2003 IE8.0.6001.18702 与现场一样,一开始不能登陆,设置后正常. 两次设置相同

android 5.0以下版本使用atof报错解决

经过测试,如果手机系统在5.0之下,项目project.properties的target若在5.0以上(android-20), NDK 使用atof就会报错: cannot locate symbol "atof",使用strtof 也是一样:cannot locate symbol "strtof", 我目前所使用的解决办法是用 strtod()方法