SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xx.xxxx.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
今天迁移网站忽然遇到这个问题 上网查了后发现是因为数据库升级版本后造成的
错误原因
使用GROUP BY 语句违背了sql_mode=only_full_group_by。因为mysql版本5.7之后默认的模式是ONLY_FULL_GROUP_BY
sql_mode=only_full_group_by参数仅允许包括SELECT列表中的所有列和所有聚合函数的GROUP BY子句。因此,当GROUP BY子句不包括所需的所有列或聚合函数时,会出现此错误。
要解决此问题,您应该仔细检查查询,并确保所有必需的列和聚合函数都包含在GROUP BY子集中。如果必要,您可能需要修改查询或调整sql_mode设置,以允许更灵活的GROUP BY子句。
解决方法
修改mysql的配置文件 (etc/my.cnf文件) 在文件中添加一句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
然后重启数据库服务
service mysqld restart
问题解决