解决 MySql 问题:“ORDER BY clause is not in GROUP BY clause and contains nonaggregated column”
🗂️

解决 MySql 问题:“ORDER BY clause is not in GROUP BY clause and contains nonaggregated column”

 

错误原因

这个错误一般发生在mysql 5.7以及5.7 以上的版本中,其原因是mysql的默认配置中,sql_mode="ONLY_FULL_GROUP_BY" 这个配置严格执行了 SQL92 标准,所以很高网站维护人员在升级mysql版本时,都会修改 sql_mode 的配置,使其能兼容。
 
在 SQL 层面,group by 后面的字段没有包含 select 或 order by 后面的字段。
 

解决办法

方法一:group by 后面跟上 select 和 order by 后面的字段
方法二:修改配置:
[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"
使用 docker-compose 启动的 mysql 增加如下配置:
notion image

参考