问题
出现this is incompatible with sql_mode=only_full_group_by这个语句就说明启动了only_full_group_by规则了
介绍only_full_group_by规则:
- 这种情况可能是5.7版本的规则比较严格,当启用“only_full_group_by”模式时,MySQL会对执行GROUP BY的查询进行更严格的检查。如果SELECT列表中的任何列没有包含在聚合函数中,也没有包含在GROUP BY子句中,那么查询将返回一个错误。这个模式的目标是确保查询结果的明确性。意思就是说必须要在select列中使用聚合函数(count,sum,avg等)
解决:
1.使用聚合函数处理
在某列中明确聚合函数
结果:
当然这种方法可能满足不了用户的需求
2.禁用“only_full_group_by”模式
- 先查询哪个严格的规则:
select @@sql_mode;
结果:
————当然这里的显示有些用户的配置的环境不一样就显示有所不同
- 把我这个框起来的去掉把后面的加上,用set语句
set @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
这样就可以了
注:这种方法是一次性的重启MYSQL57服务可能就没了,需要重新修改这个规则,我建议用这种方法,当然另一种的方法是永久的,可能没搞好文件配置就会把MYSQL的服务搞得启动不了了