自学内容网 自学内容网

【数据库】MySQL解决ONLY_FULL_GROUP_BY模式

错误报告:

表达式 #38 在 SELECT 列表中未包含在 GROUP BY 子句中,并且包含了非聚合列 ‘platform.oai.score’,此列并非在 GROUP BY 子句中的列的功能性依赖;这与 sql_mode 设置为 only_full_group_by 不兼容。

错误起因:

在 MySQL 数据库版本 5.7 及以上版本中,默认激活了 ONLY_FULL_GROUP_BY SQL 模式。在此模式下,执行 GROUP BY 操作时,若 SELECT 语句中的列未在 GROUP BY 子句中声明,则该 SQL 语句将被视为非法。由于相关列未在 GROUP BY 子句中指定,因此当数据库设置中包含 sql_mode=only_full_group_by 时,使用 GROUP BY 将会导致报错。

解决方案:

  1. 检视当前模式:执行以下查询语句 SELECT @@GLOBAL.sql_mode;

  2. 在 Linux 系统中,编辑 /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
    
  3. 在 Windows 系统中,请打开 my.ini 文件,添加以下配置代码,保存后重启数据库服务:

    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    

原文地址:https://blog.csdn.net/qq_42737644/article/details/142815980

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!