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.youkuaiyun.com/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';
博客围绕MySQL报错展开,执行mysql --version显示版本信息后,出现与sql_mode=only_full_group_by不兼容的报错。解释了ONLY_FULL_GROUP_BY的含义,即SELECT列须在GROUP BY中或在聚合函数里。通过查询验证原因,最后给出在终端执行特定语句的解决方法。
3106

被折叠的 条评论
为什么被折叠?



