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

mysql将不会在mac os上使用group by,这与sql_mode=only_full_group_by不兼容。

MySQL在Mac OS上使用GROUP BY时与sql_mode=only_full_group_by不兼容。sql_mode是MySQL的一个系统变量,用于控制MySQL的行为。only_full_group_by是其中的一个模式,它要求在使用GROUP BY时,SELECT语句中的列必须是GROUP BY子句中的列或者是聚合函数。

在Mac OS上,MySQL默认的sql_mode包含了only_full_group_by模式,这意味着在使用GROUP BY时,必须遵循上述规则。然而,由于某些历史原因,Mac OS上的MySQL版本在默认情况下不支持only_full_group_by模式,因此在使用GROUP BY时会出现兼容性问题。

解决这个问题的方法是修改MySQL的配置文件,将sql_mode中的only_full_group_by模式移除。具体步骤如下:

  1. 打开MySQL的配置文件my.cnf,该文件通常位于/etc/mysql/目录下。
  2. 在[mysqld]部分添加或修改以下行: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. 保存并关闭配置文件。
  4. 重启MySQL服务。

修改后的配置文件中,sql_mode的值包含了其他模式以及一些常用的模式,但不包含only_full_group_by模式。这样,MySQL在Mac OS上就可以正常使用GROUP BY了。

需要注意的是,修改MySQL的配置文件可能会影响其他功能或应用程序的正常运行,因此在修改之前请确保了解相关风险,并备份重要数据。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云数据库 MySQL:https://cloud.tencent.com/product/cdb_mysql
  • 云数据库 MariaDB:https://cloud.tencent.com/product/cdb_mariadb
  • 云数据库 PostgreSQL:https://cloud.tencent.com/product/cdb_postgresql
  • 云数据库 SQL Server:https://cloud.tencent.com/product/cdb_sqlserver

以上是关于MySQL在Mac OS上使用GROUP BY与sql_mode=only_full_group_by不兼容的解释和解决方法,以及腾讯云相关产品的推荐。

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

相关·内容

MySQL报错1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated colu

ONLY_FULL_GROUP_BY的设定,将不允许查询字段包括非聚集列 查询mysql服务器版本:以下命令在终端或者navicat中输入执行均可。...默认: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION 方法一: 查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY...关闭正在运行的mysql 2. 修改/etc/my.cnf,将sql_mode=中的only_full_group_by给删掉 3....推荐使用更改my.cnf方法更改sql_mode,以防止后续重启mysql服务或者服务器配置失效。...最后,推荐使用方法二,更改配置文件,Mac下注意目录权限问题,如果需要也可以在系统偏好设置里指定配置文件位置,如下图所示:

34850

ERROR 1055 (42000): Expression #1 of SELECT list is not in

; this is incompatible with sql_mode=only_full_group_by 字面意思理解是sql_model=only_full_group_by限制了,导致在以往MYSQL...:ONLY_FULL_GROUP_BY的设定,将不允许查询字段包括非聚集列 查询mysql服务器版本: select @@version 显示: 5.7.10 #查看sql_mode的语法 select...,所以去掉就好 方法一: 查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时需要将select的字段都包含在...但是查看自己的配置my.cnf发现在sql_mode中并没有ONLY_FULL_GROUP_BY这个值 然后去查看Laravel的配置文件,config/database.php,查找mysql的配置,...关闭正在运行的mysql 2. 修改/etc/my.cnf,将sql_mode=中的only_full_group_by给删掉 3.

1.4K40

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregate

; this is incompatible with sql_mode=only_full_group_by 字面意思理解是sql_model=only_full_group_by限制了,导致在以往MYSQL...:ONLY_FULL_GROUP_BY的设定,将不允许查询字段包括非聚集列 查询mysql服务器版本: select @@version 显示: 5.7.10 #查看sql_mode的语法 select...,所以去掉就好 方法一: 查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时需要将select的字段都包含在...关闭正在运行的mysql 2. 修改/etc/my.cnf,将sql_mode=中的only_full_group_by给删掉 3....重启mysql,再执行出错的sql发现能成功执行了 sql_mode解析: 参考自:https://blog.csdn.net/Cooldiok/article/details/59131952 ONLY_FULL_GROUP_BY

1.1K30

ERROR 1055 (42000): Expression #1 of SELECT list is not in

; this is incompatible with sql_mode=only_full_group_by 字面意思理解是sql_model=only_full_group_by限制了,导致在以往MYSQL...:ONLY_FULL_GROUP_BY的设定,将不允许查询字段包括非聚集列 查询mysql服务器版本: select @@version 显示: 5.7.10 #查看sql_mode的语法 select...,所以去掉就好 方法一: 查询mysql 1055错误码发现问题为在mysql的配置中如果设置了sql_mode包含ONLY_FULL_GROUP_BY值得话,在进行查询时需要将select的字段都包含在...关闭正在运行的mysql 2. 修改/etc/my.cnf,将sql_mode=中的only_full_group_by给删掉 3....重启mysql,再执行出错的sql发现能成功执行了 sql_mode解析: 参考自:https://blog.csdn.net/Cooldiok/article/details/59131952 ONLY_FULL_GROUP_BY

1.1K20

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

incompatible with sql_mode=only_full_group_by" 2....问题分析 ---- 一、原理层面 这个错误发生在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

1.4K51

sql_mode兼容性,MySQL 8.0 升级踩过的坑

sql_mode兼容性,MySQL 8.0 升级踩过的坑 前言: 1. MySQL升级8.0之后,业务访问数据库报错 2....... 2022-03-24T20:02:40.077202+08:00 9221 Execute set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES...在MySQL 5.7中sql_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兼容的参数设置。

4.6K10

小白学习MySQL - only_full_group_by的校验规则

这里要提到的一个参数就是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...this is incompatible with sql_mode=only_full_group_by 我们删除sql_modeonly_full_group_by, set session...子句中未包含非聚合列的SQL,就需要写SQL的同学能保证select和group by的一致性,否则执行的SQL很可能得到的就是错误的结果集,从MySQL 5.7开始就默认支持校验规则only_full_group_by

39230

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

(在5.7.5之前,MySQL没有检测到函数依赖,并且ONLY_FULL_GROUP_BY默认情况下是启用的。关于5.7.5之前的行为的描述,请参阅MySQL 5.6参考手册。...在MySQL 5.7.5之前,启用ONLY_FULL_GROUP_BY 禁用这个扩展,因此需要 HAVING使用非混淆表达式来写入子句。...如果无法修改违规查询(例如,如果它是由第三方应用程序生成的),请sql_mode在服务器启动时将系统变量设置为启用 ONLY_FULL_GROUP_BY。...如果我们假设应用程序不会在5.7.4之前的开发版本的MySQL 5.7中使用,那么可以sql_mode根据当前服务器版本为应用程序设置 值,如下所示: SET sql_mode = IF(LEFT(...要处理这种兼容性,请使用以下解决方法之一: 使用基于行的复制 使用 IGNORE 在MySQL 5.6和5.7中使用SQL语句不会产生不同结果的SQL模式 存储的程序(

3.3K30

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

当我们迁移到 MySQL 5.7+ 的版本时,常会碰到 ERROR 1055 only_full_group_by 错误,这是 5.7 之后 SQL_MODE 默认打开了严格模式导致的错误。...SQL_MODE 是什么? 讲 ONLY_FULL_GROUP_BY 错误前,我们先来说一下 SQL_MODE。理解 MySQL 工作原理能更好的帮你理解错误发生的本质原因。...正如我前文所写,这个错误的关键原因是规范的 SQL 语法,5.7 之后默认 SQL_MODE 变为严格模式。...我们先关掉 sql_mode 的严格模式来试试: [关闭严格模式] 在宽松模式下,我们可以看出这个 query 虽然可以查询,但语法和逻辑稍有问题。...[ONLY_FULL_GROUP_BY 使用聚合函数] MySQL 还提供了 ANY_VALUE() 函数,来解决这类问题: [ONLY_FULL_GROUP_BY 使用 any value] 总结和推荐

4.6K60

【黄啊码】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...,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION only_full_group_by说明: only_full_group_by :使用这个就是使用和oracle...的 ONLY_FULL_GROUP_BY 但很多网友说直接修改mysql配置文件,在my.ini加上sql_mode=即可 [mysqld] sql_mode= 黄啊码也亲自尝试过,确实可以!

40830

MySQL5.7 group by新特性,报错1055

项目中本来使用的是mysql5.6进行开发,切换到5.7之后,突然发现原来的一些sql运行都报错,错误编码1055,错误信息和sql_mode中的“only_full_group_by“有关,到网上看了原因...,说是mysql5.7中only_full_group_by这个模式是默认开启的  解决办法大致有两种:  一:在sql查询语句中不需要group by的字段使用any_value()函数  当然...当然,还有别的办法,打开mysql命令行,执行命令 select @@sql_mode 1 这样就可以查出sql_mode的值,复制这个值,在my.cnf中添加配置项(把查询到的值删掉only_full_group_by...然后重重启mysql服务 注:使用命令 set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 1 这样可以修改一个会话中的配置项...,在其他会话中是生效的。

58530

GROUP BY 后 SELECT 列的限制:which is not functionally dependent on columns in GROUP BY clause

(cname)不在 GROUP BY 的子句中,同时它也不是聚合函数;这与 sql 模式:ONLY_FULL_GROUP_BY 不相容。...is incompatible with sql_mode=only_full_group_by 如果是使用Mybatis,会有如下报错: bad SQL grammar []; nested exception...BY clause; this is incompatible with sql_mode=only_full_group_by 为什么 GROUP BY 之后不能直接引用原表(不在 GROUP BY...模式会影响 MySQL 支持的 SQL 语法以及它执行的 数据验证检查,这使得在不同环境中使用MySQL以及将MySQL与其他数据库服务器一起使用变得更加容易。...总结   1、SQL 严格区分层级,包括谓词逻辑中的层级(EXISTS),也包括集合论中的层级(GROUP BY);   2、有了层级区分,那么适用于个体的属性就不适用于团体了,这也就是为什么聚合查询的

3K50

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...with sql_mode=only_full_group_by错误 解决方法 :执行SET GLOBAL sql_mode = ”; 把sql_mode 改成非only_full_group_by模式...在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题 sql_mode常用值如下: ONLY_FULL_GROUP_BY: 对于GROUP...设置此值时,用默认的存储引擎替代,并抛出一个异常 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...with sql_mode=only_full_group_by错误 解决方法 :执行SET GLOBAL sql_mode = ”; 把sql_mode 改成非only_full_group_by模式...在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题 sql_mode常用值如下: ONLY_FULL_GROUP_BY: 对于GROUP...设置此值时,用默认的存储引擎替代,并抛出一个异常 PIPES_AS_CONCAT: 将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似...如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysqlsql_mode设置如下: 在my.cnf添加如下配置 [mysqld] sql_mode=’ONLY_FULL_GROUP_BY

1.3K90

MySQL多列字段去重的案例实践

除了distinct,group by子句也可以去重,从需求的理解,如果按照code做group by,应该就可以得到唯一的code了,但是实际执行,提示这个错误,select code, cdate...BY clause; this is incompatible with sql_mode=only_full_group_by很常见的错误,因为sql_mode中含only_full_group_by...MySQL不同版本sql_mode默认值可能是不同的,因此在数据库升级配合的应用迁移过程中,尤其要注意像only_full_group_by这种校验规则的改变,很可能是个坑。...仅针对当前这个问题,可以在会话级,修改sql_mode,调整校验的强度,删除only_full_group_by,set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...from tt group by code;当然,这种在会话级通过改动sql_mode实现的路径,还需要考虑场景,因为缺少only_full_group_by的校验,按照code聚类了,但cdate和ctotal

2.9K10
领券