首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用group子句和count()函数时MySQL的不一致/奇怪行为

使用group子句和count()函数时MySQL的不一致/奇怪行为
EN

Stack Overflow用户
提问于 2015-05-22 06:24:27
回答 1查看 281关注 0票数 1

由于一个错误(?)在MySQL中,COUNT()函数和GROUP BY子句可能导致MySQL泄漏db详细信息,如下所示-

代码语言:javascript
复制
mysql> select count(*), floor(rand()*2)x from users group by x;

错误1062 (23000):关键字“group_key”重复输入“1”

这里可以使用精心编制的查询显示敏感的详细信息。这是意想不到的行为,也许是个窃听器?

代码语言:javascript
复制
mysql> select count(*), floor(rand()*2)x from users group by x;

+----------+---+  
| count(*) | x |  
+----------+---+  
| 8        | 0 |  
| 5        | 1 |  
+----------+---+ 

2 rows in set (0.00 sec) <--有时查询运行时没有任何错误(预期的行为)

有人知道导致MySQL错误的确切原因吗?

我正在使用的测试平台是这个优秀的资源-- https://github.com/Audi-1/sqli-labs

EN

回答 1

Stack Overflow用户

发布于 2015-05-22 06:56:31

这看起来是一个报告(和旧的!)bug:http://bugs.mysql.com/bug.php?id=58081

描述: GROUP BY查询在某些情况下返回此错误: 关键字'group_key‘的重复条目'107374182410737418241’ 'group_key‘不是表中的真实列名。它看起来像是临时表中分组列的名称。 如何重复:设置名称latin1;如果存在t1,则删除表;创建表t1(a int) engine=myisam;插入到t1值(0)、(0)、(1)、(0)、(0)、(0);通过插入(‘,t2.a,t1.a,(@@global.max_binlog_size))从t1,t1 t2组中选择count(*); 错误1062 (23000):关键字“group_key”重复输入‘10737418241’

注释表明,建议的工作是增加可用的堆和临时表大小:

我发现的解决方法是增加tmp_table的大小: 设置会话max_heap_table_size=536870912;设置会话tmp_table_size=536870912; 现在我的请求生效了!

或者检查可用的磁盘空间。

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

https://stackoverflow.com/questions/30389700

复制
相关文章

相似问题

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