this is incompatible with sql_mode=only_full_group_by怎么解决
时间: 2023-10-27 22:53:09 浏览: 211
这是因为 MySQL 的一个严格模式 "ONLY_FULL_GROUP_BY",它要求 GROUP BY 语句中的列必须在 SELECT 语句中出现,或者是一个聚合函数的参数。如果不满足这个条件,就会出现该错误。
要解决这个问题,有两种方法:
1. 关闭 ONLY_FULL_GROUP_BY 模式。可以在 MySQL 配置文件中找到 sql_mode 参数,将其设置为:sql_mode=NO_ENGINE_SUBSTITUTION,重启 MySQL 即可。
2. 修改 SQL 语句,保证 GROUP BY 语句中的列都出现在 SELECT 语句中或者是聚合函数的参数中。
相关问题
this is incompatible with sql_mode=only_full_group_by 解决
这个错误是因为 MySQL 的 SQL 模式设置了 `only_full_group_by`,这个模式要求 GROUP BY 语句中的所有列都必须在 SELECT 列表中出现,或者使用聚合函数对它们进行计算。
如果你的 SQL 查询中使用了 GROUP BY,但是 GROUP BY 中的某些列在 SELECT 列表中没有出现或者没有使用聚合函数,就会触发这个错误。
解决方法有两种:
1. 修改 SQL 模式
可以通过修改 MySQL 的 SQL 模式来禁用 `only_full_group_by`,具体的方法是在 MySQL 配置文件中添加以下行:
```
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
```
其中 `NO_ENGINE_SUBSTITUTION` 是禁用 `only_full_group_by` 的选项。
2. 修改查询语句
如果不想修改 SQL 模式,也可以修改查询语句,让它符合 `only_full_group_by` 的规则。具体的方法是在 GROUP BY 语句中包含所有 SELECT 列表中的列,或者使用聚合函数对它们进行计算。
例如,下面的查询语句会触发 `only_full_group_by` 错误:
```
SELECT name, COUNT(*) FROM mytable GROUP BY name;
```
可以修改为:
```
SELECT name, COUNT(*) FROM mytable GROUP BY name, id;
```
或者:
```
SELECT name, MAX(id), COUNT(*) FROM mytable GROUP BY name;
```
这样就可以避免错误了。
mysql5.7 this is incompatible with sql_mode=only_full_group_by
在MySQL 5.7中,当执行查询语句时可能会出现"this is incompatible with sql_mode=only_full_group_by"的错误。这是由于MySQL 5.7默认启用了严格的sql_mode=only_full_group_by配置,按照SQL92标准要求,当使用GROUP BY语句时,必须包含所有查询的字段或者使用聚合函数。
为了兼容MySQL 5.7以下版本,有些旧的源码中没有按照此规则编写。因此,当执行这些旧的代码时就会出现该错误。
要解决这个问题,有以下几种方法:
1. 将查询中的所有字段都添加到GROUP BY子句中。这样做可以保证查询的合法性,但可能会导致结果不准确。
2. 使用聚合函数将其他字段进行聚合。例如,如果只需要对某个字段进行分组,可以使用SUM()、COUNT()或者其他合适的聚合函数对其他字段进行聚合。
3. 修改MySQL的sql_mode配置,将only_full_group_by从sql_mode中移除。这样可以恢复到较早版本的默认行为,但可能会引入其他潜在的问题。
需要注意的是,修改MySQL的配置需要具备管理员权限。可以通过修改my.cnf或者my.ini文件中的配置来实现。
总之,"this is incompatible with sql_mode=only_full_group_by"错误是由于MySQL 5.7中默认启用了严格的sql_mode=only_full_group_by配置所引起的。可以通过添加所有字段到GROUP BY子句,使用聚合函数对其他字段进行聚合,或者修改MySQL的sql_mode配置来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [this is incompatible with sql_mode=only_full_group_by解决方案](https://blog.csdn.net/weixin_43818327/article/details/125598187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [mysql 5.7 this is incompatible with sql_mode=only_full_group_by](https://blog.csdn.net/qq_37752382/article/details/113310996)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [解决MySQL 5.7.9版本sql_mode=only_full_group_by问题](https://download.csdn.net/download/weixin_38697063/13699570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文