2012-04-24 6 views
6

Meine Tabellenstruktur:Fehler doppelten Eintrag '11.01' für Schlüssel 'user_image' bei der Erstellung neuer UNIQUE-Index

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; 

Der Index, den ich hinzufügen werde:

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

Ergebnis :

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

Wie sollte ich meinen UNIQUE Index hinzufügen?

+1

Klingt, als ob Sie eine Zeile haben, die Ihre Einschränkung verletzt. 'SELECT * FROM userimageview WHERE benutzer_id = 1 UND image_id = 11' –

+0

Besser noch, finden Sie alle Duplikate:' SELECT user_id, image_id, COUNT (*) AS löst FROM userimageview GROUP BY benutzer_id, image_id HAVING Dupes> 1 ORDER BY Dupes DESC ' –

+0

Oh, ja. Du hast Recht @Michael. Ich dachte, dass es einen STRUKTURAL-Fehler geben sollte! Bitte posten Sie Ihre Lösung als Antwort, damit ich sie annehmen kann :) –

Antwort

11

Ihre neu hinzugefügte UNIQUE-Einschränkung ist fehlgeschlagen, da Ihre Tabelle bereits doppelte Zeilen enthält, die gegen sie verstoßen. Suchen Sie die Constraint Violators mit einer Abfrage wie der folgenden. Solange diese Zeilen vorhanden sind, können Sie den Index UNIQUE nicht hinzufügen.

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