解决SELECT list is not in GROUP BY clause and contains nonaggregated column ‘XXX’
我是在Linux上面新装了一个mysql5.7的数据库,然后上传项目,日志中出现了这个错误信息。
网上找了许久,终于解决了,将解决方法记录如下。
1、查询 sql_mode
select @@sql_mode;
查询出来是 ONLY_FULL_GROUP_BY
这个严格限制了分组的条件。 解释请看这篇文章
2、去掉ONLY_FULL_GROUP_BY,重新设置值。
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‘;
上面 改变了全局sql_mode,对于新的数据库有效。已存在的数据库,则无效。
3、最终解决办法
Linux上面是在my.cnf设置 一般是在 vi /etc/my.cnf 路径
Windows 上面是my.ini设置。
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'