mysql8 only_full_group_by 移除
时间: 2023-09-22 15:05:11 浏览: 59
在MySQL 5.7之前的版本中,MySQL默认启用了`ONLY_FULL_GROUP_BY`模式,它要求在使用GROUP BY语句时,必须将SELECT列表中的所有非聚合列都包含在GROUP BY列表中。然而,在MySQL 5.7及之后的版本中,MySQL引入了一个新的SQL模式:`NO_AUTO_GROUP_BY`,它允许在GROUP BY语句中省略非聚合列。
如果你想在MySQL 8中移除`ONLY_FULL_GROUP_BY`模式,可以使用以下方法之一:
1. 修改MySQL配置文件:找到并编辑MySQL的配置文件(通常是`my.cnf`或`my.ini`),在`[mysqld]`部分添加如下行:
```
sql_mode = "NO_ENGINE_SUBSTITUTION"
```
然后重新启动MySQL服务。
2. 在会话级别临时修改SQL模式:在你的查询之前执行以下命令来更改当前会话的SQL模式:
```
SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
```
这将禁用`ONLY_FULL_GROUP_BY`模式,直到当前会话结束或重置为默认值。
无论你选择哪种方法,都应该注意只移除`ONLY_FULL_GROUP_BY`模式而不影响其他SQL模式,以避免潜在的数据不一致或错误发生。
相关问题
mysql 8.0 添加only_full_group_by
在MySQL 8.0版本中,要添加only_full_group_by属性,可以通过以下方法实现:
1. 通过命令解决:可以使用以下命令在当前会话中设置only_full_group_by属性:
```
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
这将从当前会话中移除only_full_group_by属性,但在MySQL重新启动后会失效。
2. 修改配置文件:可以通过修改MySQL的配置文件来永久地设置only_full_group_by属性。打开my.cnf(或my.ini)配置文件,在[mysqld]节下添加如下行:
```
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
```
保存文件后,重新启动MySQL服务使更改生效。
请注意,以上方法仅适用于MySQL 8.0版本。希望对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
如何取消MySQL的only_full_group_by模式
要取消MySQL的only_full_group_by模式,可以按照以下步骤进行操作:
1. 登录MySQL数据库,并执行以下命令查看当前的SQL模式:
```
SELECT @@sql_mode;
```
2. 如果SQL模式中包含'ONLY_FULL_GROUP_BY',则需要将其从SQL模式中移除。可以使用以下命令将其移除:
```
SET @@sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
3. 然后再次执行以下命令查看SQL模式是否已经修改成功:
```
SELECT @@sql_mode;
```
注意:修改MySQL的SQL模式可能会影响到数据库的其他功能,所以在进行修改之前,请先做好备份,并谨慎操作。