Thinkphp查询数据报异常错误sql_mode=only_full_group_by

      发布在:后端技术      评论:0 条评论

在MySQL 5.7及以上版本,默认启用了ONLY_FULL_GROUP_BY模式,它要求SELECT后面出现的列必须要么在GROUP BY子句中,要么在聚合函数里。例如,如果用户写了SELECT id, name FROM table GROUP BY name,那么id不在GROUP BY里,也没有被聚合函数处理,就会触发这个错误。

这里最简单的处理方式就是临时关闭ONLY_FULL_GROUP_BY模式即可,代码如下:

Db::execute("SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))");



相关文章
热门推荐