Mysql 创建新的唯一索引时,为键“user_image”复制条目“1-11”时出错
我的表格结构:Mysql 创建新的唯一索引时,为键“user_image”复制条目“1-11”时出错,mysql,indexing,unique,mysql-error-1062,Mysql,Indexing,Unique,Mysql Error 1062,我的表格结构: 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, KE
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'
我应该如何添加我的唯一索引?您新添加的唯一约束失败,因为您的表已包含违反该约束的重复行。使用如下查询查找约束违反者。只要这些行存在,就无法添加唯一索引
SELECT
user_id,
image_id,
COUNT(*) AS dupes
FROM userimageview
GROUP BY user_id, image_id
HAVING dupes > 1
ORDER BY dupes DESC
听起来您有一行违反了约束。从userimageview中选择*,其中user_id=1和image_id=11更好的是,查找所有重复项:选择user_id、image_id,按user_id从userimageview组中将*计为重复项,image_id具有重复项>1的重复项,按重复项顺序描述,是。迈克尔,你说得对。我认为应该有一个结构错误!请将您的解决方案作为答案发布,以便我可以接受:我们应该再等5分钟。无论如何,谢谢你。我整晚都在努力