首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -得到1140错误.这与sql_mode=only_full_group_by不兼容,但其禁用

问MySQL -得到1140错误.这与sql_mode=only_full_group_by不兼容,但其禁用
EN

Stack Overflow用户
提问于 2018-04-03 09:13:51
回答 1查看 236关注 0票数 0

我被这件事弄糊涂了。我以前使用过MySQL5.7x,并且一直能够通过从mysql配置中的ONLY_GROUP_BY中删除sql_modes来解决这个问题。然而,今天我似乎无法做到这一点,即使从sql_modes设置中删除它也不能阻止我收到此错误。

我知道是什么导致了这个错误,而且我知道有一项工作可以添加到SQL中,但是我没有时间修复我们应用程序中导致这一点的litteral数百个查询。

SQLMode设置为mysql.cnf:

代码语言:javascript
复制
sql_mode = " ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后通过运行查询来确认这一点:

代码语言:javascript
复制
SELECT @@SQL_MODE;

结果:

代码语言:javascript
复制
'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

但是,在运行存储的proc时,它仍然会产生错误:

SQLSTATE42000:语法错误或访问冲突: 1140在不分组的聚合查询中,SELECT列表的表达式#1包含非聚合列'schema.emp.company_id';这与sql_mode=only_full_group_by不兼容

有谁知道为什么mySQL似乎没有意识到该选项已被禁用?

我运行的是5.7.21-0ubuntu0.17.10.1 (在Ubuntu17.10上,不足为奇!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 10:40:14

好吧,为了使整个问题的奇异性翻一番,看起来如果您删除并重新创建存储的proc (没有任何代码更改,它完全相同),那么问题就消失了。

这个模式不是现有的,mySQL在它之上升级了,几周前我在我的机器上重新安装了Ubuntu17.10,并将从备份到它的所有内容都恢复了。

我无法解释上面的内容,我只能在mySQL编译(?)时假定它缓存了sql模式。储存的过程我不知道当您创建它们时,它是否会编译,但是它显然是在缓存一些东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49626303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档