关闭only_full_group_by 检测
时间: 2023-09-21 22:04:52 浏览: 106
要关闭MySQL的only_full_group_by检测,你可以使用以下方法之一:
1. 修改MySQL配置文件:打开MySQL配置文件(通常是my.cnf或my.ini),找到[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"
```
确保没有only_full_group_by在sql_mode中。保存并重启MySQL服务。
2. 在会话级别修改sql_mode:如果你无法修改MySQL配置文件,可以在执行查询前,使用以下命令修改会话级别的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";
```
确保没有only_full_group_by在sql_mode中。
请注意,关闭only_full_group_by检测可能会影响到你的查询结果,因此在执行之前,请确保你的查询语句是正确的,并且不会导致数据不一致或错误的结果。
相关问题
mysql 禁用 ONLY_FULL_GROUP_BY,暂时解决错误(sql_mode=only_full_group_by)
在 MySQL 中,ONLY_FULL_GROUP_BY 是一种 SQL mode,它要求在 GROUP BY 子句中使用的字段必须在 SELECT 子句中出现,或者是聚合函数(如 COUNT、SUM 等)的参数。
如果你的 MySQL 服务器启用了 ONLY_FULL_GROUP_BY 模式,那么当你尝试执行一个违反这个规则的查询时,就会出现错误,提示 "Expression #N of SELECT list is not in GROUP BY clause and contains nonaggregated column"。
如果你确定你的查询逻辑不需要满足 ONLY_FULL_GROUP_BY 模式的要求,可以通过修改 sql_mode 参数来禁用这个模式。具体方法如下:
1. 使用 root 用户登录 MySQL 服务器。
2. 执行以下命令查看当前 sql_mode 参数的值:
```sql
SELECT @@sql_mode;
```
3. 复制查询结果中的值,备份一下原来的 sql_mode 参数值,以便需要时可以恢复。
4. 执行以下命令修改 sql_mode 参数,删除其中的 ONLY_FULL_GROUP_BY:
```sql
SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
```
注意:上面的命令中,只保留了 STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO 和 NO_ENGINE_SUBSTITUTION 这些参数,将 ONLY_FULL_GROUP_BY 参数删除了。
5. 再次执行以下命令查看当前 sql_mode 参数的值,确认是否已经成功移除了 ONLY_FULL_GROUP_BY:
```sql
SELECT @@sql_mode;
```
如果查询结果中已经不包含 ONLY_FULL_GROUP_BY 参数,那么说明修改成功。
注意:禁用 ONLY_FULL_GROUP_BY 模式可能会导致某些查询结果不正确,因此应该在确保没有影响到业务逻辑的情况下才进行修改。
关闭only_full_group_by
要关闭 MySQL 中的 `only_full_group_by` 模式,你可以按照以下步骤操作:
1. 打开 MySQL 配置文件,通常是 `my.cnf` 或 `my.ini`。这个文件位于 MySQL 安装目录的 `etc` 或 `conf.d` 文件夹下。
2. 在文件中找到 `[mysqld]` 段落,如果没有则请自行添加。
3. 在 `[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"
```
4. 保存并关闭配置文件。
5. 重启 MySQL 服务,以使配置更改生效。
这样就成功关闭了 `only_full_group_by` 模式。请注意,这可能会影响到某些查询的结果,因为 MySQL 将不再强制要求在 GROUP BY 子句中出现的列必须在 SELECT 子句中显示。
阅读全文