欢迎投稿

今日深度:

MySQL出现this is incompatible with sql_mode=only_full_group_by错误的解决办法,

MySQL出现this is incompatible with sql_mode=only_full_group_by错误的解决办法,


目录
  • 这个就是错误截图
  • 出现原因: MySQL的版本问题
  • 解决办法:两种
    • 第一种:修改MySQL的配置文件
    • 第二种方法:修改自己的sql
  • 总结

    这个就是错误截图

    出现原因: MySQL的版本问题

    MySQL 5.7.5以上版本,实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(默认启用),那么MySQL就会拒绝执行 select list、HAVING condition或ORDER BY list引用既不在GROUP BY子句中被命名,也不在功能上依赖于GROUP BY列(由GROUP BY列唯一确定)的未聚合列的查询。

    从MySQL5.7.5开始,默认的SQL模式包括only_full_group_by。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册。)
     

    解决办法:两种

    第一种:修改MySQL的配置文件

    1. 连接数据库 输入下面命令,查询sql的模式

    select @@sql_mode;

    2. 修改数据库配置my.ini文件

    在你安装数据库的文件夹下的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
    

    3. 重启MySQL服务

    备注:我个人觉得最好不用这样吧 因为项目可能其他地方或许用到了这种模式,最好的方法是不要改动mysql的配置。正所谓能跑起来就不要动他的原理!

    第二种方法:修改自己的sql

    每个字段前加上any_value()  这种方法比较好  只需要修改sql 不会影响到其他问题

    修改前:

    SELECT
    	id AS a,
    	name  AS  b,
        age AS c
    FROM
    	user

    修改后:

    SELECT
    	any_value(id)AS a,
    	any_value(name)AS  b,
        any_value(age)AS c
    FROM
    	user

    总结

    到此这篇关于MySQL出现this is incompatible with sql_mode=only_full_group_by错误的解决办法的文章就介绍到这了,更多相关this is incompatible with sql_mode=only_full_group_by内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

    您可能感兴趣的文章:
    • MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法(含举例)

    www.htsjk.Com true http://www.htsjk.com/Mysql/45604.html NewsArticle MySQL出现this is incompatible with sql_mode=only_full_group_by错误的解决办法, 目录 这个就是错误截图 出现原因: MySQL的版本问题 解决办法:两种 第一种:修改MySQL的配置文件 第二种方法:修改自...
    评论暂时关闭