Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | 51CTO学院 | CSDN程序员研修院 | OSChina 博客 | 腾讯云社区 | 阿里云栖社区 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏多维度架构

82.29. this is incompatible with sql_mode=only_full_group_by

		
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.table.username' which
is not functionally dependent on columns in GROUP BY clause;
this is incompatible with sql_mode=only_full_group_by		
		
		

问题出在 MySQL 5.7 向 MySQL 8.0 迁移。

查询 sql_mode 设置

		
select @@global.sql_mode;		
'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
		
		

临时解决方案,去掉 ONLY_FULL_GROUP_BY 即可

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

彻底解决,有三种解决方案:

采用哪个方案?打工人的方案,就是解决眼前问题,如果你对项目负责,最好采用第三种方案。

我的职业生涯遇到无数次,因版本太低同时发现重大漏洞,厂商已经不在维护该版本,此时一边是黑客攻击,一边你又无法短时间内升级到新版本,公司又不能接受停服,你会怎么应对?我用了很多非常规手段,给开发团队争取了一周的时间,升级系统。