7

私のテーブル構造:

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インデックスを追加するにはどうすればよいですか?

4

1 に答える 1

13

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
于 2012-04-24T01:27:38.177 に答える