mysql升级到5.7之后,使用之前的分组查询语句报错

which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因是5.7默认设置了

sql_mode=only_full_group_by
only_full_group_by :使用这个就使用和oracle一样的group 规则, select的列都要在group中,或本身是聚合列(SUM,AVG,MAX,MIN) 才行。

因为selece的列不在group中,所以报错。

解决办法如下:

在mysql的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

注意“=”后面的字符串不能有空格,逗号(“,”)后面也不能有,不然会报错,mysql也启动不了

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐