知乎专栏 |
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';
彻底解决,有三种解决方案:
采用哪个方案?打工人的方案,就是解决眼前问题,如果你对项目负责,最好采用第三种方案。
我的职业生涯遇到无数次,因版本太低同时发现重大漏洞,厂商已经不在维护该版本,此时一边是黑客攻击,一边你又无法短时间内升级到新版本,公司又不能接受停服,你会怎么应对?我用了很多非常规手段,给开发团队争取了一周的时间,升级系统。