欢迎光临
我们一直在努力

THINKPHP5+MYSQL5.7.20 GROUP方法异常解决方法SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column

THINKPHP5 + mysql5.7+下出现如下错误提示

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'file_manage.type' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

导致此错误的原因是:mysql5.7中only_full_group_by是开启的

解决方法:

方法0、点击MySQL选择MySQL settings ->选择sql-mode->选择sql-none和sql-user mode皆可。

方法1:如果不是集成环境,直接进入配置文件,修改my.cnf(windows下是my.ini),删掉only_full_group_by这一项即可。

可是我的环境是用的云数据库无法使用以上方法

方法2:

在不修改MySQL配置文件的情况下,需要修改sql语句来执行。

group by后面的列名,还是和以前一样通过select直接获取,而对于select中获取非group by的信息,则要通过any_value()函数。

推荐用下面的方法

// 导致错误的语句
Db::name('file_manage')->field('count(*) as num,cid,type')->where($map)->group('cid')->select();
// 改成以下语句
Db::name('file_manage')->field('count(*) as num,cid,any_value(type) as type')->where($map)->group('cid')->select();
赞(0)
版权归原作者所有,如有侵权请告知。达维营-前端网 » THINKPHP5+MYSQL5.7.20 GROUP方法异常解决方法SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址