首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

与mysql中的sql_mode=only_full_group_by不兼容

是指在MySQL数据库中,当设置sql_mode为only_full_group_by时,会导致某些查询语句无法执行或者结果不符合预期。

sql_mode是MySQL中的一个系统变量,用于控制数据库的行为。当设置sql_mode为only_full_group_by时,MySQL会对GROUP BY语句进行严格的检查,要求SELECT语句中的列必须是GROUP BY子句中的列或者使用聚合函数进行计算。

这种严格的检查可以避免在GROUP BY查询中出现模糊的结果,但也会导致一些旧的查询语句无法正常执行。特别是在旧版本的MySQL中,许多查询语句可能没有按照严格的GROUP BY规则编写,因此在更新MySQL版本或者设置sql_mode为only_full_group_by时,可能会出现不兼容的情况。

解决与mysql中的sql_mode=only_full_group_by不兼容的方法有以下几种:

  1. 修改查询语句:将查询语句中的列修改为GROUP BY子句中的列或者使用聚合函数进行计算,以符合only_full_group_by的要求。
  2. 修改sql_mode:可以将sql_mode设置为其他的值,如STRICT_TRANS_TABLES,以避免only_full_group_by的限制。但需要注意,修改sql_mode可能会影响其他查询语句的执行结果,需要谨慎操作。
  3. 使用合适的腾讯云产品:腾讯云提供了多种数据库产品,如TencentDB for MySQL、TencentDB for MariaDB等,这些产品都可以在控制台中进行配置,包括sql_mode的设置。可以根据具体需求选择合适的产品,并根据文档中的指引进行配置。

总结:与mysql中的sql_mode=only_full_group_by不兼容是指在MySQL数据库中,当设置sql_mode为only_full_group_by时,可能会导致某些查询语句无法执行或者结果不符合预期。可以通过修改查询语句、修改sql_mode或者使用腾讯云的数据库产品来解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql5.7.5版本sql_mode=only_full_group_by问题

mysql5.7.5版本默认设置了sql_mode=only_full_group_by,造成了之前使用sql语句有些会出现sql_mode=only_full_group_by错误,接下来为解决此类问题方法...1. sql解决(但是不是永久) 查看sql_mode(select @@sql_mode) 去掉ONLY_FULL_GROUP_BY,重新设置值。...,NO_ENGINE_SUBSTITUTION'; ) 对于已存在数据库,则需要在对应数据下执行(set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...修改my.cnf文件(永久) 找到mysqlmy.cnf文件,linux中找到/etc/my.cnf 找到sql_mode修改为( sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ) 如果没有在最下方添上( sql_mode

35540

sql_mode兼容性,MySQL 8.0 升级踩过

因为,报错这句sql_mode设置,MySQL 5.7 版本默认sql_mode设置一模一样。...在MySQL 5.7sql_mode默认配置就是sql_mode='ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE...2.3 检查并解决不兼容sql_mode 实际上,在MySQL 8.0废弃sql_mode并不仅仅只有NO_AUTO_CREATE_USER,还有一些模式同样也是8.0兼容。...但是,以上种种方案只能保证MySQL升级前后全局参数配置是OK;客户端连接设置会话级参数我们无法控制。这里就需要开发人员配合一起检查业务侧代码里有没有MySQL 8.0兼容参数设置。...总结 那么,哪些参数/设置是MySQL 8.0之前版本不兼容呢? 我将在下一篇文章同大家分享这个问题。我会持续做一些相关记录和分享。

4.6K10

MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方法

一、原理层面        这个错误发生在mysql 5.7 版本及以上版本会出现问题:        mysql 5.7版本默认sql配置是:sql_mode="ONLY_FULL_GROUP_BY...很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。...由于开启了ONLY_FULL_GROUP_BY设置,所以如果一个字段没有在target list和group by字段同时出现,或者是聚合函数值的话,那么这条sql查询是被mysql认为非法,会报错误...三、查看sql_mode语句如下 select @@GLOBAL.sql_mode; 四、解决方案 1.永久修改,需修改mysql配置文件,通过手动添加sql_mode方式强制指定不需要ONLY_FULL_GROUP_BY...2.临时性修改sql_mode,但是重启mysql数据库服务之后,ONLY_FULL_GROUP_BY还会出现。

8.9K30

MySQL5.7 中使用 group by 报错 this is incompatible with sql_mode=only_full_group_by

问题分析 ---- 一、原理层面 这个错误发生在mysql 5.7 版本及以上版本,5.7版本默认sql_mode配置包含 ONLY_FULL_GROUP_BY,这个配置严格执行了”SQL92标准”...很多人从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序 二、sql层面: sql执行时,出现该原因: 简单来说就是:输出结果是叫 target...由于开启了ONLY_FULL_GROUP_BY设置,所以如果一个字段没有在target list 和 group by 字段同时出现,或者是聚合函数值的话,那么这条sql查询是被mysql认为非法...查看sql模式 ---- 查看 sql_mode 语句 show global variables like 'sql_mode'; 通过命令行可以看到 sql_mode 值有一堆,将最前面的 ONLY_FULL_GROUP_BY...解决方案(去除 ONLY_FULL_GROUP_BY) ---- 方案一: 临时性解决 (执行SQL语句) 此方式重启MySQl服务后失效 set @@GLOBAL.sql_mode="STRICT_TRANS_TABLES

1.4K51

MySQLsql_mode参数

MySQLsql_mode参数 sql_mode参数详解 首先我们看看mysql默认sql_mode值是什么: root@localhost :(none)09:25:15>select...一共有7个值,分别是 only_full_group_by: 对于group by聚合操作,如果在select列,没有在group by中出现,那么将认为这个sql是不合法,因为列不在group...在STRICT_TRANS_TABLES模式下,插入数据时,mysql会严格进行数据校验,当发现插入列值未满足要求,直接报告error错误,保证了错误数据无法插入到数据库。...设置此值时,用默认存储引擎替代,并抛出一个异常。...如果未给出该模式,被零除时MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNOREMySQL生成被零除警告,但操作结果为NULL。

1.5K10

MySQLMySQL配置sql_mode作用

MySQL配置sql_mode作用 不知道你有没有踫到过这种问题,在 MySQL8 默认情况下,我们之前习惯为 DateTime 类型指定 0000-00-00 这种格式是无法插入或者修改数据...sql_mode 根据官网解释,MySQL 服务器是可以在不同 SQL 模式运行,这个模式会影响 MySQL 支持 SQL 语法及其执行数据验证检查。...我们可以通过上面的方式直接修改 my.cnf 文件,当然也可以通过 SET sql_mode=xxx 形式在命令行动态修改,如果是修改 my.cnf 文件,则需要重启 MySQL 服务,再次执行插入语句...0 ONLY_FULL_GROUP_BY 表示拒绝在 SELECT、HAVING 或 GROUP BY 引用聚合列查询。...在转移或升级到 MySQL8 之后,其实最常见问题就是上面说过日期问题,0格式日期这种形式其实是已经过时方式了,也是推荐方式,所以在 MySQL8 中会默认在严格模式下禁用这种形式日期存储,

9510

mysql5.7 group by语法 1055

先来看如下语句,查询默认存在引擎表 ?  之前使用MySQL版本为5.7以下,根据support进行分组执行语句如下 ? 添加跟分组support无关字段engine ?...information_schema.ENGINES.ENGINE' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode...=only_full_group_by 意思是 SELECT list不在GROUP BY子句中,并且包含非聚合列'information_schema. engine。...在功能上不依赖于GROUP BY子句中列;这与sql_mode=only_full_group_by兼容 也就是select展示列必须跟group by相关 这就跟oraclegroup by语法一致了...,NO_ENGINE_SUBSTITUTION 修改方式,window编辑my.ini,Linux编辑my.cnf,将[mysqld]sql_mode值删除ONLY_FULL_GROUP_BY,重启解决

1.3K20

小白学习MySQL - only_full_group_by校验规则

在Oracle跑一定是报错,提示如下,即要求在select非聚合列必须出现在group by子句中,为什么在MySQL中就可以执行?...这里要提到一个参数就是sql_mode,他存储MySQL应该支持SQL语法,对数据校验等,一些常见值,如下所示, (1) ONLY_FULL_GROUP_BY 对于GROUP BY聚合操作,...在MySQL 5.7以上,sql_mode参数值是默认包含这个only_full_group_by校验规则,但是在5.7以下,包含此规则,如上SQL,就是跑在5.5, show variables...,group by未包含非聚合列是c1,而且明确提示,他和sql_mode=only_full_group_by兼容, select c1, c2 from test group by c2; SQL...SQL很可能得到就是错误结果集,从MySQL 5.7开始就默认支持校验规则only_full_group_by能看出,MySQL提高了校验强度,毕竟更严格校验规则,才可能避免这些非常容易出现错误

39230

【黄啊码】MySQL:Syntax error or access violation: 1055 Expression #1 of SELECT list is not ...

如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用查询,这些查询将引用组未命名非聚合列,而不是在功能上依赖于它们。...(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是启用。关于前5.7.5行为描述,请参阅MySQL 5.6参考手册。)...session和global sql_mode值都为: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO...一样group 规则, select列都要在group,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行,其实这个配置目前个人感觉和distinct差不多,所以去掉就好 官网摘抄:... ONLY_FULL_GROUP_BY 但很多网友说直接修改mysql配置文件,在my.ini加上sql_mode=即可 [mysqld] sql_mode= 黄啊码也亲自尝试过,确实可以!

40830

mysql sql-mode 解析和设置

sql_mode:简而言之就是:它定义了你MySQL应该支持sql语法,对数据校验等等 select @@sql_mode:使用该命令我们可以查看我们当前数据库sql_mode mysql> select...各个值含义: ONLY_FULL_GROUP_BY: 对于GROUP BY聚合操作,如果在SELECT列,没有在GROUP BY中出现,那么将认为这个SQL是不合法,因为列不在GROUP BY...; 可以使用该语句来将空格替换掉only_full_group_by,这样我们就可以使用 mysql> SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY...设置此值时,用默认存储引擎替代,并抛出一个异常 三、据说是MySQL5.0以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。 ...将当前数据库模式设置为STRICT_TRANS_TABLES模式: mysql> set @@sql_mode=STRICT_TRANS_TABLES;   没有最好最坏模式,只有最合适模式。

1.5K20

mysql 版本bug

mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_bymysql 工具 搜索或者插入数据时报下面错误: ERROR...=only_full_group_by 原因: 看一下group by语法: select 选取分组列+聚合函数 from 表名称 group by 分组列  从语法格式来看,是先有分组,再确定检索列...我当前Mysql版本5.7.17, 再看一下ONLY_FULL_GROUP_BY意思是:对于GROUP BY聚合操作,如果在SELECT列,没有在GROUP BY中出现,那么这个SQL是不合法,...,NO_ENGINE_SUBSTITUTION 第一项默认开启ONLY_FULL_GROUP_BY, 解决方法: 1.只选择出现在group by后面的列,或者给列增加聚合函数;(推荐) 2.命令行输入...但是如果你重启Mysql服务的话,发现ONLY_FULL_GROUP_BY还是会存在 想要彻底解决这个问题 就得去改my.ini 配置(如果你们mysql 没有这个文件,就把my-default.ini

1.4K20

MySQL only_full_group_by 1055 报错三种解决方案,临时关闭有影响吗?

当我们迁移到 MySQL 5.7+ 版本时,常会碰到 ERROR 1055 only_full_group_by 错误,这是 5.7 之后 SQL_MODE 默认打开了严格模式导致错误。...讲 ONLY_FULL_GROUP_BY 错误前,我们先来说一下 SQL_MODE。理解 MySQL 工作原理能更好帮你理解错误发生本质原因。...SQL_MODE 是 MySQL 一个环境变量,定义了 MySQL 支持 SQL 语法和数据校验程度。 SQL_MODE 一共三种模式 ANSI 模式:宽松模式。...正如我前文所写,这个错误关键原因是规范 SQL 语法,5.7 之后默认 SQL_MODE 变为严格模式。...ONLY_FULL_GROUP_BY 是 SQL_MODE TRADITIONAL 选项参数,从 5.7 开始默认开启为严格模式。

4.6K60

MySQLsql_mode设置导致报错1292

MySQL8.0一个PXC集群,默认sql_mode设置如下:select @@sql_mode;+-----------------------------------------------...,默认情况下MySQL都设置了严厉模式,不同于Oracle默认相对宽松模式,8.0版本这些严厉模式包括建表时不允许没有主键,插入日期型数据不能为0或其他非法格式等等,这些模式设置会导致在数据迁移...、兼容性测试时报错,要么修改应用限制以适配数据库,要么修改数据库配置以适配已有的应用。...= 'ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';这样后续会话连接就不错报错了,需要注意是,在PXC...一劳永逸方法就是修改数据库配置文件/etc/my.cnf,sql_mode设置如下,重启数据库生效:sql_mode='ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO

84730

Mysql服务器SQL模式 (官方精译)

(在5.7.5之前,MySQL没有检测到函数依赖,并且ONLY_FULL_GROUP_BY默认情况下是启用。关于5.7.5之前行为描述,请参阅MySQL 5.6参考手册。...如果无法修改违规查询(例如,如果它是由第三方应用程序生成),请sql_mode在服务器启动时将系统变量设置为启用 ONLY_FULL_GROUP_BY。...但为了恢复MySQL 5.7MySQL 5.6严格模式兼容性,并为受影响应用程序提供更多时间修改,MySQL 5.7.8进行了以下更改: ERROR_FOR_DIVISION_BY_ZERO...在以下情况下,您将遇到SQL模式更改相关复制兼容问题: MySQL 5.6主站和5.7从站 基于语句复制 如前所述,SQL语句在MySQL 5.6和5.7产生不同结果...要处理这种兼容性,请使用以下解决方法之一: 使用基于行复制 使用 IGNORE 在MySQL 5.6和5.7使用SQL语句不会产生不同结果SQL模式 存储程序(

3.3K30

MySQL 报错:5.7版本sql_mode=only_full_group_by问题

MySQL 5.7.9版本sql_mode=only_full_group_by问题 用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException...=only_full_group_by错误 解决方法 :执行SET GLOBAL sql_mode = ”; 把sql_mode 改成非only_full_group_by模式。...,可能会报错,删除my.ini中新添文件,重新启动即可, MySQLsql_mode合理设置 sql_mode是个很容易被忽视变量,默认值是空值,在这种设置下是可以允许一些非法操作,比如允许一些非法数据插入...设置此值时,用默认存储引擎替代,并抛出一个异常 PIPES_AS_CONCAT: 将”||”视为字符串连接操作符而非或运算符,这和Oracle数据库是一样,也和字符串拼接函数Concat相类似...如果使用mysql,为了继续保留大家使用oracle习惯,可以对mysqlsql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode=’ONLY_FULL_GROUP_BY

1.6K30

MySQL 报错:5.7版本sql_mode=only_full_group_by问题

MySQL 5.7.9版本sql_mode=only_full_group_by问题 用到GROUP BY 语句查询时com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException...=only_full_group_by错误 解决方法 :执行SET GLOBAL sql_mode = ”; 把sql_mode 改成非only_full_group_by模式。...,可能会报错,删除my.ini中新添文件,重新启动即可, MySQLsql_mode合理设置 sql_mode是个很容易被忽视变量,默认值是空值,在这种设置下是可以允许一些非法操作,比如允许一些非法数据插入...设置此值时,用默认存储引擎替代,并抛出一个异常 PIPES_AS_CONCAT: 将”||”视为字符串连接操作符而非或运算符,这和Oracle数据库是一样,也和字符串拼接函数Concat相类似...如果使用mysql,为了继续保留大家使用oracle习惯,可以对mysqlsql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode=’ONLY_FULL_GROUP_BY

1.3K90
领券