ql语句报错问题
#1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘cash.sdb_login_log.id‘ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
###
官方文档的解决方法
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-setting
查询mysql服务器版本:
select @@version
显示:
5.7.10
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
#查看sql_mode的语法
select @@GLOBAL.sql_mode;
select @@SESSION.sql_mode;
#修改sql_mode的语法 ,去掉ONLY_FULL_GROUP_BY,重新set model
SET GLOBAL sql_mode = ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘;
SET SESSION sql_mode = ‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘;
或者
非全局模式:set @@sql_model=‘’;
全局模式 :set @@GLOBAL.sql_mode=‘’;
相关推荐
MySQL版本问题,特别是关于`sql_mode=only_full_group_by`的设置,是一个常见的困扰开发者的问题。在MySQL中,`sql_mode`是一个变量,它定义了服务器执行SQL语句时遵循的规则集。`ONLY_FULL_GROUP_BY`是其中的一种...
在MySQL 5.7.9版本中,引入了一个新的默认SQL模式`ONLY_FULL_GROUP_BY`,这个模式旨在增强SQL查询的严谨性,防止在GROUP BY语句中出现未聚合的列,以避免不确定的结果。然而,这也导致了某些在旧版本中能够正常运行...
这是新建的一个测试表,同一天,同一时刻的有两条数据 ...set sql_mode = (SELECT REPLACE(@@sql_mode, ‘ONLY_FULL_GROUP_BY’, ‘’)); %y:表示显示两位的年份 %m:表示月份 %d:表示天数 这样就可以了。DATE_FORMAT()
案例一:ONLY_FULL_GROUP_BY 问题描述 MySQL版本从5.6升级至5.7之后,部分SQL执行报错,报错信息如下: ERROR 1055 (42000): Expression #3 of XXXXXX list is not in GROUP BY clause and contain
- 配置文件修改:在`my.cnf`或`my.ini`(根据你的操作系统)中,找到`sql_mode`配置项,删除`ONLY_FULL_GROUP_BY`,然后重启MySQL服务。 注意,全局模式的修改会影响所有新创建的数据库,而对已存在的数据库,你...
MySQL 5.7及以上版本引入了一个新的SQL标准模式`ONLY_FULL_GROUP_BY`,该模式旨在增强SQL查询的严格性,确保结果集的合法性。在早期的MySQL版本中,某些GROUP BY查询可以返回不确定的行数据,这在严格模式下是不允许...
this is incompatible with sql-mode=only-full-group-by
本文主要关注的是几个常见的问题及其解决方案,包括因`sql_mode=only_full_group_by`导致的GROUP BY查询错误、清空表数据的方法,以及如何处理MySQL占用过多内存的情况。 首先,`sql_mode=only_full_group_by`是...
sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,PIPES_AS_CONCAT,ANSI_QUOTES' ``` 需要注意的是,MySQL...
2. 更改MySQL的`sql_mode`设置来禁用`ONLY_FULL_GROUP_BY`。你可以通过执行如下SQL语句临时关闭此模式: ```sql SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_...
例如,如果你希望在当前会话中暂时关闭`ONLY_FULL_GROUP_BY`,可以运行`SET SESSION sql_mode = REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', '');`。 总之,理解和灵活运用`sql_mode`是MySQL管理员和开发者的重要...
MySQL 5.7引入了一项新的SQL模式,即`ONLY_FULL_GROUP_BY`,这导致了在升级后一些之前正常运行的SQL查询开始报错,错误代码1055。这个模式要求在`GROUP BY`子句中出现的所有列要么在`SELECT`列表中通过聚合函数(如`...
sql-mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT slow_query_log = ON slow_query_log_file = /home/mysql/...
此外,`/etc/***f`配置文件中可以设置`sql_mode`,例如设置`ONLY_FULL_GROUP_BY`可以使得某些查询操作不受到限制。 最后,将MySQL的bin目录添加到系统的PATH环境变量中,确保MySQL命令行工具可以全局访问。 ```...
在MySQL中,如果`sql_mode`包含了`ONLY_FULL_GROUP_BY`,则不允许在`SELECT`列表中出现未聚合的列。为了解决这个问题,我们需要修改`sql_mode`: ```sql SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...