MySQL:报错this is incompatible with sql_mode=only_full_group_by

这篇具有很好参考价值的文章主要介绍了MySQL:报错this is incompatible with sql_mode=only_full_group_by。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在mysql 工具 搜索或者插入数据时报下面错误:

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_tl.emp.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:
首先,我们看一下group by的语法:
select 选取分组中的列+聚合函数 from 表名称 group by 分组的列 
从语法格式来看,是先有分组,再确定检索的列,检索的列只能在参加分组的列中选
Mysql版本5.7:
再看一下ONLY_FULL_GROUP_BY的意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。

# 查看mysql版本命令
select version();

# 查看sql_model参数命令:
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.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第一项默认开启ONLY_FULL_GROUP_BY

解决方法:

1.只选择出现在group by后面的列,或者给列增加聚合函数;(不推荐)
2.关闭ONLY_FULL_GROUP_BY,输入:

set @@GLOBAL.sql_mode='';
set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
SELECT @@sql_mode;
SELECT @@GLOBAL.sql_mode;

这个时候就不存在ONLY_FULL_GROUP_BY ;但是如果重启Mysql服务的话,还是会存在的

想要彻底解决这个问题只有修改 my.ini 配置(如果你们mysql 没有这个文件,就把my-default.ini 改成my.ini),分别在[mysql]及[mysqld]下添加命令文章来源地址https://www.toymoban.com/news/detail-808876.html

[mysql]
SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
[mysqld]
SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

到了这里,关于MySQL:报错this is incompatible with sql_mode=only_full_group_by的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • mysql sql_mode数据验证检查

    mysql sql_mode数据验证检查

    sql_mode 功能 sql_mode 会影响MySQL支持的sql语法以及执行的 数据验证检查 。通过设置sql_mode ,可以完成不同严格程度的数据校验,有效地保障数据准确性 sql_mode 严格模式 VS 宽松模式 宽松模式 比如,插入的数据不满足 表的数据类型,也可能接受,并且不报错,只会有警告而且。

    2024年02月10日
    浏览(8)
  • MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

    MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

    ​ 作为初学者,我们在使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_mode=only_full_group_by,十分常见,每次都是老长的一串出现,然后带走你所有的好心情。 ​​ 出现这样的报错,并不是因为你的代码写得不好,而是因为在MySQL 5.7后,MySQ

    2024年02月22日
    浏览(6)
  • SQL 报错 sql_mode=only_full_group_by 问题

    SQL 报错 sql_mode=only_full_group_by 问题

    SQL 报错 sql_mode=only_full_group_by 问题 原因分析 一、原理层面 这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题: mysql 5.7.5版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了\\\"SQL92标准\\\"。 很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql

    2024年02月15日
    浏览(9)
  • MySQL运维实战(4.2) 关于SQL_MODE

    作者:俊达 早期,MySQL对一些不符合SQL标准的SQL语句和数据的容忍度比较高,可能会自主地执行或转换一些语句。但是,随着MySQL 5.7的推出,对默认的SQL模式进行了修改,更加强调SQL的合规性,这种变化是为了提高数据一致性和统一SQL标准。系统在升级MySQL版本时,特别是从

    2024年01月17日
    浏览(24)
  • 关于yarn安装时报“node“ is incompatible with this module的解决办法

    关于yarn安装时报“node“ is incompatible with this module的解决办法

    在用vue写一个h5页面时,当在用yarn安装时,提示如下错误: The engine “node” is incompatible with this module. Expected version \\\"^14.18.0 || ^16.14.0 || =18. 我是使用命令忽略错误: 然后再安装即可以成功: 安装完之后项目可以正常启动了

    2024年02月10日
    浏览(8)
  • The engine “node“ is incompatible with this module. Expected version

    The engine “node“ is incompatible with this module. Expected version

    vue项目用了yarn,yarn install后报错如下: ** ** 执行: 然后yarn install后成功。 在此记录问题,如有需要修改的地方,还请不吝赐教。

    2024年02月12日
    浏览(10)
  • mysql:关闭sql_mode=ONLY_FULL_GROUP_BY模式

    mysql:关闭sql_mode=ONLY_FULL_GROUP_BY模式

    JAVA后台报错信息: 原因: mysql默认开启only_full_group_by模式,当碰到不符合格式的group by 语句就会报错;(sql_mode=only_full_group_by 模式 要求 select 多少个字段对象,则group by 后面就需要带上多少个字段对象;) 例如sql语句如下: 运行时就会报错: 其大体的意思就是这个sql语句

    2024年01月18日
    浏览(10)
  • The engine “node“ is incompatible with this module. Expected version 问题解决办法

    The engine “node“ is incompatible with this module. Expected version 问题解决办法

    安装一个组件库总是报错: 手动右键删除 node_modules 文件夹,清空了 npm 缓存: 发现还是不行。 后来在网上找到了解决方案:忽略错误。 终端输入命令: 再重新安装依赖,运行项目就可以了:

    2024年02月12日
    浏览(9)
  • 关系数据库-9-[mysql8]中的语法校验规则sql_mode应用

    Mysql中sql_mode使用详解 sql_mode是一组mysql的语法校验规则,定义了mysql应该支持的sql语法、数据校验等。 1.3.1 ANSI模式 这是一种宽松模式,该模式下,会对所操作数据进行校验,如果不符合校验规则,数据会按照规则执行,并报warning警告。 1.3.2 STRICT_TRANS_TABLES模式 这是一种严格

    2024年02月02日
    浏览(8)
  • MySQL运维实战(4.6) SQL_MODE之NO_BACKSLASH_ESCAPES

    作者:俊达 在MySQL中,默认情况下,反斜杠()被用作转义字符,转义反斜杠()后一个字符;当设置NO_BACKSLASH_ESCAPES后,反斜杠()将不作为转义字符,而被视为普通字符。 下面是一个示例,说明了这两种情况的区别: 未设置NO_BACKSLASH_ESCAPES模式 设置NO_BACKSLASH_ESCAPES 总之,N

    2024年01月23日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包