如何禁用 only_full_group_by? [复制]

Posted

技术标签:

【中文标题】如何禁用 only_full_group_by? [复制]【英文标题】:How to disable only_full_group_by? [duplicate] 【发布时间】:2020-08-22 00:31:55 【问题描述】:

我面临禁用它的问题。我正在逐步寻找一些解释,但我找不到。请问有人可以帮我解决这个问题吗?

【问题讨论】:

不要禁用它,而是编写有效的 SQL 查询。 对不起,你的意思是用 SQL 写对吧? 我的意思是你应该编写不违反聚合规则的查询。这样,您无需禁用该设置,而是从标准 SQL(以及除 mysql 之外的几乎所有其他 DBMS)的角度进行有效查询。那将是更好的解决方案。 【参考方案1】:

您可以重新set 全局变量@@sql_mode - 但您需要注意不要删除可能是其中一部分的其他参数。

这是一种方法:

set global sql_mode = (select replace(@@sql_mode,'ONLY_FULL_GROUP_BY', ''));

请注意,禁用此 sql 模式通常表示您的某些查询设计不当。我实际上不建议这样做;相反,您应该更加努力地编写符合 SQL 标准的关于 group by 行为的查询。

【讨论】:

好的 GMB 我真的很感谢这个帮助。现在请理解我,我是新手,一步一步地解释我。现在首先我必须打开 phpmyadmin 并转到 SQL 对吗? @StevenTaylor:是的,确切地说,您可以在 phpmyadmin 的 SQL 面板中运行此查询。 OK 运行此查询后我得到错误:错误 SQL 查询:文档集全局 sql_mode = (select replace(@@sql_mode,'ONLY_FULL_GROUP_BY','')) MySQL 说:文档 #1227 - 访问否认;您需要(至少其中一项)超级权限才能执行此操作 GMB 你怎么看,为什么我收到这个我没有权限的错误?或者我必须做什么才能获得该特权? @StevenTaylor:是的,这是权限问题。您可以尝试set session sql_mode = ... 而不是set global sql_mode = ...(每次创建新会话时都需要运行此命令)。

以上是关于如何禁用 only_full_group_by? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在休眠中禁用 ONLY_FULL_GROUP_BY

为啥不应该禁用 ONLY_FULL_GROUP_BY

sql 在PHP 5.7.5+中禁用ONLY_FULL_GROUP_BY

在 Sequel Pro 中禁用严格模式

如何解决 laravel eloquent 中与 sql_mode=only_full_group_by 不兼容的问题?

如何更新我的查询以符合 sql_mode=only_full_group_by 启用? [复制]