如何添加可以报告1062错误的主键?

时间:2018-10-16 07:42:41

标签: mysql

首先,我使用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;

This是该表具有的主键。

这项工作可以吗?

LOCK TABLES pm_raw_p_reshost;

ALTER TABLE `pm_raw_p_reshost`
ADD PRIMARY KEY (`DCTIME`, `KBP`, `KPI_NO`) USING BTREE;

UNLOCK TABLES;

任何答案将不胜感激。

1 个答案:

答案 0 :(得分:1)

主键也是唯一键,因此问题在于, DCTIMEKBPKPI_NO 字段的组合已经超过了唯一的一行导致创建主键失败。

可能的解决方案:

  1. 删除重复项并重新创建PK,选择行,然后决定保留哪些行。

    SELECT * from pm_raw_p_reshost where `DCTIME`=1539669761000 and `KBP`=6708 and `KPI_NO`=200809260001
    
  2. 创建具有所需PK的新表,并对新表使用INSERT IGNORE,重复值将自动删除。