执行SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));如何调回来
时间: 2024-02-05 16:03:39 浏览: 119
要将 MySQL 的 sql_mode 设置恢复成原来的值,可以执行以下命令:
```
SET sql_mode='原来的值';
```
其中,'原来的值' 是你在修改 sql_mode 属性之前设置的值,可以从 MySQL 的配置文件中查找到。如果不确定原来的值是什么,可以尝试使用以下命令:
```
SELECT @@sql_mode;
```
这将显示当前的 sql_mode 设置值。然后,将该值复制并用作恢复命令中的 '原来的值'。
相关问题
这与 sql_mode=only_full_group_by 不兼容
sql_mode=only_full_group_by 是MySQL的一个严格模式,它要求在使用GROUP BY语句时,SELECT列表中的非聚合列必须在GROUP BY子句中出现。如果不遵守这个规则,就会出现错误代码1055,提示Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'mydb.t.address' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by。
解决这个问题的方法有两种:
1. 修改SQL语句,使用ANY_VALUE(column_name)来代替非聚合列。根据MySQL文档的说明,如果name不是t的主键或唯一的NOT NULL列,则可以使用ANY_VALUE(column_name)来解决这个问题。例如:
```sql
SELECT name, ANY_VALUE(address), MAX(age) FROM t GROUP BY name;
```
2. 临时修改sql_mode。在MySQL 8中,可以使用any_value(field)函数来抑制ONLY_FULL_GROUP_BY模式的拒绝。这样无论sql_mode=only_full_group_by是否开启,SQL语句都可以正常执行。例如:
```sql
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
```
如何使用sql语句,修改sql_mode=only_full_group_by
要使用SQL语句修改sql_mode=only_full_group_by,可以按照以下步骤进行操作:
1. 首先,打开你的MySQL客户端,连接到你的数据库。
2. 运行以下SQL语句来查看当前的sql_mode设置:
```sql
SELECT @@sql_mode;
```
3. 确认是否包含了"only_full_group_by"选项。如果没有,那么不需要进行任何修改。如果有,继续下一步。
4. 运行以下SQL语句来修改sql_mode设置,移除"only_full_group_by"选项:
```sql
SET sql_mode=(SELECT REPLACE(@@sql_mode,'only_full_group_by',''));
```
5. 再次运行以下SQL语句来验证是否成功修改了sql_mode设置:
```sql
SELECT @@sql_mode;
```
6. 如果成功,你会发现"only_full_group_by"选项已经被移除了。
请注意,这种修改只对当前会话有效,重启数据库后会失效。如果你希望永久修改这个设置,你需要在MySQL配置文件中进行相应的修改。