2012-04-24 22 views
6

मेरे तालिका संरचना:त्रुटि डुप्लिकेट प्रविष्टि '1-11' कुंजी 'user_image' के लिए जब बनाने नई अद्वितीय सूचकांक

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; 

सूचकांक कि मैं जोड़ने के लिए जा रहा हूँ:

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

परिणाम :

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

मुझे अपना UNIQUE अनुक्रमणिका कैसे जोड़नी चाहिए?

+1

लगता है जैसे आपके पास एक बाधा है जो आपकी बाधा का उल्लंघन करती है। उपयोगकर्ता चयन देखें * उपयोगकर्ता_आईडी = 1 और image_id = 11' –

+0

अभी तक बेहतर है, सभी डुप्लीकेट ढूंढें: 'user_id, image_id, COUNT (*) यूजर_आईडी के रूप में उपयोगकर्ता के माध्यम से ग्रुप यूजर_आईडी, छवि_आईडी डूप्स को डुप्लिकेट करें> 1 ऑर्डर डीप्सेस द्वारा डीईएससी ' –

+0

ओह, हाँ। तुम सही हो @ माइकल। मैंने सोचा कि एक स्ट्रक्चरल त्रुटि होनी चाहिए! कृपया अपना समाधान उत्तर के रूप में पोस्ट करें ताकि मैं इसे स्वीकार कर सकूं :) –

उत्तर

11

आपकी नई गयी UNIQUE बाधा विफल रही है क्योंकि आपकी तालिका में पहले से ही डुप्लिकेट पंक्तियां हैं जो इसका उल्लंघन करती हैं। निम्न की तरह एक क्वेरी के साथ बाधा उल्लंघन करने वालों का पता लगाएं। जब तक ये पंक्तियां मौजूद हों तब तक आप UNIQUE अनुक्रमणिका को जोड़ने में सक्षम नहीं होंगे।

SELECT 
    user_id, 
    image_id, 
    COUNT(*) AS dupes 
FROM userimageview 
GROUP BY user_id, image_id 
HAVING dupes > 1 
ORDER BY dupes DESC