首先,我使用Navicat取消了表中的三个主键,然后想恢复主键,但得到了1062 - Duplicate entry '1539669761000-6708-200809260001' for key 'PRIMARY'
。我现在不敢进行任何操作,因为数据太多。现在如何恢复主键?
这是我使用的语句。
ALTER TABLE `pm_raw_p_reshost`
ADD PRIMARY KEY (`DCTIME`, `KBP`, `KPI_NO`) USING BTREE;
这项工作可以吗?
LOCK TABLES pm_raw_p_reshost;
ALTER TABLE `pm_raw_p_reshost`
ADD PRIMARY KEY (`DCTIME`, `KBP`, `KPI_NO`) USING BTREE;
UNLOCK TABLES;
任何答案将不胜感激。
答案 0 :(得分:1)
主键也是唯一键,因此问题在于, DCTIME
,KBP
,KPI_NO
字段的组合已经超过了唯一的一行导致创建主键失败。
可能的解决方案:
删除重复项并重新创建PK,选择行,然后决定保留哪些行。
SELECT * from pm_raw_p_reshost where `DCTIME`=1539669761000 and `KBP`=6708 and `KPI_NO`=200809260001
创建具有所需PK的新表,并对新表使用INSERT IGNORE,重复值将自动删除。