【问题标题】:Duplicate entry for key 'group_key'键“group_key”的重复条目
【发布时间】:2014-12-30 18:57:25
【问题描述】:

我在 MySQL 中运行一个查询,我按四列分组并选择了很多东西,包括我分组的四个值。但是当我运行查询时出现此错误:

Duplicate entry '92-0-10-7' for key 'group_key'

92、0、10 和 7 都是特定行的四个分组列的值(实际上,我检查过,有 63 行适合这些参数)。但我不知道这意味着什么,也不知道如何正确运行我的查询。

我的查询:

Create table table2 as
Select round(x, 0) as x, round(a, 0) as a, round(b, 0) as b, c, d, e, f
from table1
group by round(x, 0), round(a, 0), round(b, 0), c

92 适合 x、0 a、10 b 和 7 c。

我在这张表上没有索引。

谢谢!

【问题讨论】:

  • 您的查询是 SELECT,而该错误消息可能只出现在 DML(UPDATEINSERT)。因此,错误消息是由另一个查询引起的。
  • 另一个查询是什么意思?我只运行这个查询,它仍然给我这个消息。另外,FWIW,实际查询是一个create table命令,但唯一的区别是select前面有一个“create table table2 as”。
  • @zerkms 我确实尝试在没有创建表部分的情况下运行相同的查询并且没有任何改变,所以我认为这并不重要。
  • GROUP BY 在此查询中没有意义。没有聚合函数,这里...ROUND() 不是聚合函数。 d、e 和 f 的值无法正确确定。你真的是说SELECT DISTINCT吗?否则,是分组的目的吗?
  • 可能是 MySQL 的 bug:bugs.mysql.com/bug.php?id=62755

标签: mysql key


【解决方案1】:

您的问题似乎是 MySQL 错误。前几天我正在查看我们的生产服务器的日志,错误日志中充满了这个错误。我使用了下面的解决方法,错误消失了。

SET SESSION max_heap_table_size=536870912;

设置会话 tmp_table_size=536870912;

来源:http://bugs.mysql.com/bug.php?id=58081

【讨论】:

  • 也为我工作。 mysql 5.6.33。将这些设置添加到 my.cnf。
  • 我无法在这里真正描述我的表结构,但使用 5.6.35 并没有解决我的错误
  • 你救了我的培根。谢谢。
【解决方案2】:

这通常是磁盘空间问题。特别是临时空间(在 linux 中 /tmp)。检查你的数据库服务器磁盘空间。

【讨论】:

  • 将 MySQL 的 tmpdir 更改为具有更多可用空间的文件夹为我解决了这个问题。谢谢!
【解决方案3】:

你应该像这样把别名放在团购中:

Create table table2 as
Select round(x, 0) as x, round(a, 0) as a, round(b, 0) as b, c, d, e, f
from table1
group by x, a, b, c;

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2017-02-17
    • 2013-05-08
    • 2021-09-17
    • 2023-04-03
    • 2012-04-05
    • 2011-11-11
    • 2012-07-23
    相关资源
    最近更新 更多