博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
72.11. this is incompatible with sql_mode=only_full_group_by
阅读量:7092 次
发布时间:2019-06-28

本文共 2263 字,大约阅读时间需要 7 分钟。

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mydb.contact.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

mysql> select @@version;+-----------+| @@version |+-----------+| 5.7.10    |+-----------+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)mysql> SET sql_mode = '';Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> select id,name from contact group by name limit 10;+-------+-------------+| id    | name        |+-------+-------------+| 84046 |   张伟      || 80259 |   张磊      ||   784 |   王岩      || 87685 |  杨钞       |+-------+-------------+10 rows in set (0.07 sec)

不建议设置 SET sql_mode = '',正确方式如下:

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';mysql> 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';

或者采用

Adding only one mode to sql_mode without removing existing ones:SET sql_mode=(SELECT CONCAT(@@sql_mode,',
'));Removing only a specific mode from sql_mode without removing others:SET sql_mode=(SELECT REPLACE(@@sql_mode,'
',''));In your case, if you want to remove only ONLY_FULL_GROUP_BY mode, then use below command:SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

你可能感兴趣的文章
ACM进阶计划
查看>>
Spring3 表达式语言(SpEL)介绍
查看>>
【Java学习笔记之七】java函数的语法规则总结
查看>>
5.23. msgpack
查看>>
【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
查看>>
IE6 png图片实现半透明的方法
查看>>
程序猿的日常——Java基础之clone、序列化、字符串、数组
查看>>
Gulp Error: Cannot find module 'jshint/src/cli'
查看>>
又见尾递归
查看>>
Ruby中如何识别13位的时间戳
查看>>
Linux 命令详解(二)awk 命令
查看>>
RobotFramework自动化4-批量操作案例
查看>>
Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
查看>>
MVC4 WebAPI(二)——Web API工作方式
查看>>
JAVA学习Swing章节标签JLabel中图标的使用
查看>>
JAVA学习Swing章节按钮组件JButton的简单学习
查看>>
聊下 git 多账户问题
查看>>
Python+Tkinter 密保小工具
查看>>
centos 创建swap 交换分区
查看>>
Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)
查看>>