在测试一个 group by 的sql查询语句时出现了如下的错误
1 | SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database.table.column' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by |
这种错误是由于mysql高于5.7的版本默认的sql配置是sql_mode="ONLY_FULL_GROUP_BY"
,这个配置严格执行了”SQL92标准”。
此标准下,一个字段没有在target list(查询结果列/目标列表)和group by字段中同时出现,或者是聚合函数的值的话,那么这条sql查询是被mysql认为非法的
解决办法:
方案一:修改sql语句
方案二:
在数据库配置在[mysqld]后面添加代码:
1
2
3[mysqld]
...
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION