mysql --version结果:mysql Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
报错的最后一句是this is incompatible with sql_mode=only_full_group_by
以下转自https://blog.csdn.net/free377096858/article/details/91963406
问题原因:
ONLY_FULL_GROUP_BY的意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现,否则就会报错,或者这个字段出现在聚合函数里面。
在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
原因验证:
SELECT @@GLOBAL.sql_mode;和SELECT @@SESSION.sql_mode; 的结果的开头都是ONLY_FULL_GROUP_BY
解决方法:
终端执行set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';