【发布时间】:2017-04-14 11:10:10
【问题描述】:
我有这张桌子:
CREATE TABLE `event_schedule_tag` (
`event_schedule_id` bigint(20) NOT NULL,
`tag_id` bigint(20) NOT NULL,
KEY `event_schedule_id` (`event_schedule_id`),
KEY `tag_id` (`tag_id`),
CONSTRAINT `event_schedule_tag_ibfk_1` FOREIGN KEY (`event_schedule_id`) REFERENCES `event_schedule` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci
我想在两列上添加主键。但是当我执行时
alter table event_schedule_tag add primary key(event_schedule_id, tag_id);
我得到:
ERROR 1062 (23000): Duplicate entry '1130915-260' for key 'PRIMARY'
当我执行时
alter table event_schedule_tag drop primary key;
我得到:
ERROR 1091 (42000): Can't DROP 'PRIMARY'; check that column/key exists
出路是什么?
编辑:我收到错误消息。我虽然说“主键已经存在”,但意思是:“表中有重复项-> 无法创建主键”现在更有意义了。 我删除了重复项并毫无问题地创建了主键。谢谢!
【问题讨论】:
-
由于条目重复,没有创建主键。因此,尝试删除它是没有意义的。先删除重复项。
-
参考stackoverflow.com/questions/27492732/…,这是您问题的答案。
-
ERROR 1062 (23000): Duplicate entry '1130915-260' for key 'PRIMARY'表示计划 ID 1130915 与标签 ID 260 条目的组合不止一个。所以首先你应该先处理这种情况,然后你才能创建两者的复合键。 -
@Kapil 哦,现在我明白了!我没有得到正确的错误,虽然它说“已经有一个主键”
-
@JanKoutný 我已在答案中更新了我的 cmets。如果对您有帮助,请点赞或将其标记为答案。谢谢!