2014-11-04 21 views
7

Tôi đang chạy truy vấn trong MySQL, nơi tôi nhóm theo bốn cột và chọn nhiều thứ, bao gồm bốn giá trị tôi nhóm theo. Nhưng tôi nhận được lỗi này khi tôi chạy truy vấn:Mục nhập trùng lặp cho khóa 'group_key'

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

92, 0, 10, và 7 là tất cả các giá trị trong bốn nhóm theo cột cho một hàng cụ thể (trên thực tế, tôi đã kiểm tra, và có 63 hàng phù hợp với các thông số đó). Nhưng tôi không có ý tưởng đó có nghĩa là gì, hoặc làm thế nào để chạy truy vấn của tôi đúng cách.

truy vấn của tôi:

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 sẽ phù hợp với x, 0 là, 10 b, và 7 c.

Tôi không có chỉ mục nào trên bảng này.

Cảm ơn!

+0

truy vấn của bạn là 'SELECT' trong khi đó thông báo lỗi chỉ có thể xảy ra cho DML ('UPDATE' hoặc' INSERT'). Vì vậy, thông báo lỗi là do một truy vấn khác gây ra. – zerkms

+0

Ý của bạn là một truy vấn khác? Tôi chỉ chạy truy vấn này và nó vẫn mang lại cho tôi thông điệp đó. Ngoài ra, FWIW, truy vấn thực tế là một lệnh tạo bảng, nhưng sự khác biệt duy nhất là có một "tạo bảng table2 như" ở phía trước của lựa chọn. – japem

+0

@zerkms Tôi đã thử chạy cùng một truy vấn mà không cần tạo một phần bảng và không có gì thay đổi, vì vậy tôi không thực sự nghĩ rằng nó quan trọng. – japem

Trả lời

8

Sự cố của bạn có vẻ giống như lỗi MySQL. Tôi đã xem lại nhật ký cho máy chủ sản xuất của mình vào ngày khác và các nhật ký lỗi đã được lấp đầy với lỗi này. Tôi đã sử dụng giải pháp thay thế bên dưới và các lỗi đã biến mất.

SET SESSION max_heap_table_size = 536870912;

SET SESSION tmp_table_size = 536870912;

Nguồn: http://bugs.mysql.com/bug.php?id=58081

+0

đã hoạt động đối với tôi. cảm ơn – bloub

+0

cũng đã làm việc cho tôi. mysql 5.6.33. Đã thêm các cài đặt này vào my.cnf. – cronfy

+0

Tôi không thể mô tả cấu trúc bảng của mình ở đây, nhưng sử dụng 5.6.35 và điều này không khắc phục được lỗi của tôi – chiliNUT

0

Điều này thường là đĩa vấn đề không gian. Không gian tạm thời đặc biệt (trong linux /tmp). Kiểm tra xem bạn có máy chủ cơ sở dữ liệu không gian đĩa.

0

Bạn nên đặt bí danh trong nhóm mua như thế này:

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; 
Các vấn đề liên quan