SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1解决方法

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
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1解决方法_第1张图片

 然后重启数据库服务

service mysqld restart

问题解决

你可能感兴趣的:(mysql,数据库,mysql,sql)