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

  • Post author:
  • Post category:其他


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

问题解决



版权声明:本文为qq_42402086原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。