开发者

解决mysql @@sql_mode问题---only_full_group_by

开发者 https://www.devze.com 2024-09-05 09:00 出处:网络 作者: 披荆的少年
目录运行环境系统运行出现的问题上度娘查询的结果提供两个解决方案方案一(只适合暂时解决性的,mysql 重启就一朝回到解放前了)方案二(修改mysql 中的配置文件,达到当重启mysql 回去制动加载配置文件的内容)总结运
目录
  • 运行环境
  • 系统运行出现的问题
  • 上度娘查询的结果
  • 提供两个解决方案
    • 方案一(只适合暂时解决性的,mysql 重启就一朝回到解放前了)
    • 方案二(修改mysql 中的配置文件,达到当重启mysql 回去制动加载配置文件的内容)
  • 总结

    运行环境

    • linux Ubuntu 14.0.4.3
    • 数据库 mysql 5.7.0

    系统运行出现的问题

    报错如下:

    Expression #2 of SELECT list is not in GROUP BY clause and contains

    nonaggregated column ‘sss.month_id’ which is not functionally

    dependent on columns in GROUP BY clause; this is incompatible with

    sql_mode=only_full_group_by

    上度娘查询的结果

    问题出现的原因:

    MySQL 5.7.5及以上功能依赖检测功能。

    如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。

    (5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。

    有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)

    提供两个解决方案

    方案一(只适合暂时解决性的,mysql 重启就一朝回到解放前了)

    1.用sql语句查询 select @@global.sql_mode

    查询出来的值为:

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    2.去掉ONLY_FULL_GROUP_BY,重新设置值。

    set @@global.sql_mode
    ='STRICT_TRANS_TABLES,androidNO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NOphp_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

    方案二(修改mysql 中的配置文件,达到当重启mysql 回去制动加载配置文件的内容)

    1.通过linux 命令 javascript【whereis mysql 】找到mysHkRmvcrql 的配置文件

    解决mysql @@sql_mode问题---only_full_group_by

    2.【cdwww.devze.com /etc/mysql 】找到配置文件 my.cnf

    解决mysql @@sql_mode问题---only_full_group_by

    3.【vim my.cnf】编辑里面的内容,加上图中的那段代码

    解决mysql @@sql_mode问题---only_full_group_by

    4.重启mysql 服务就搞定了

    解决mysql @@sql_mode问题---only_full_group_by

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号