2012-04-24 30 views
6

cấu trúc bảng của tôi:Lỗi Duplicate entry '1-11' cho khóa 'user_image' khi tạo index UNIQUE mới

CREATE TABLE `userimageview` (
    `user_id` int(11) unsigned NOT NULL, 
    `image_id` int(11) unsigned NOT NULL, 
    `thumbnail_view` int(10) unsigned NOT NULL, 
    `fullsize_view` int(10) unsigned NOT NULL, 
    `point` int(10) unsigned NOT NULL, 
    KEY `everything` (`user_id`,`image_id`,`thumbnail_view`,`fullsize_view`,`point`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Chỉ số mà tôi sẽ thêm:

ALTER TABLE `userimageview` ADD UNIQUE `user_image` (`user_id` , `image_id`) 

quả :

#1062 - Duplicate entry '1-11' for key 'user_image' 

Tôi nên thêm chỉ số UNIQUE của mình như thế nào?

+1

Có vẻ như bạn có hàng vi phạm ràng buộc của bạn. 'SELECT * FROM userimageview WHERE user_id = 1 AND image_id = 11' –

+0

Tốt hơn, hãy tìm tất cả các bản sao:' SELECT user_id, image_id, COUNT (*) AS dupes FROM userimageview GROUP BY user_id, image_id HAVING dupes> 1 ORDER BY dupes DESC ' –

+0

Ồ, vâng. Bạn đúng @Michael. Tôi nghĩ rằng cần có một lỗi STRUCTURAL! Xin vui lòng gửi giải pháp của bạn như là một câu trả lời để tôi có thể chấp nhận nó :) –

Trả lời

11

Hạn chế của bạn mới được thêm UNIQUE không thành công vì bảng của bạn đã chứa các hàng trùng lặp vi phạm. Xác định vị trí các trình vi phạm ràng buộc với một truy vấn như sau. Bạn sẽ không thể thêm chỉ mục UNIQUE miễn là các hàng này có mặt.

SELECT 
    user_id, 
    image_id, 
    COUNT(*) AS dupes 
FROM userimageview 
GROUP BY user_id, image_id 
HAVING dupes > 1 
ORDER BY dupes DESC 
Các vấn đề liên quan