phpAdmin中重复键错误

时间:2018-03-03 15:15:40

标签: mysql unique-constraint

我正在使用PHPAdmin在字段上创建唯一索引。它返回错误1062 - 重复键。 。 。然后它给了我违规的数据。问题是数据不重复。每个记录在该字段中都有唯一的条目。认为这是一个异常,我删除了该条目并再次尝试。它在删除记录之前的最后一行给了我同样的错误。

表架构:

CREATE TABLE prospects ( 
   client_id int(11) NOT NULL AUTO_INCREMENT, 
   company varchar(64) DEFAULT NULL, 
   created_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
   ... some other fields like first_name...
  PRIMARY KEY (client_id),
  KEY first_name (first_name,last_name) 
) ENGINE=MyISAM AUTO_INCREMENT=1958 DEFAULT CHARSET=latin1

更改表语句失败:

ALTER TABLE acceler6_accelrefer.prospects ADD UNIQUE company_ui (company);

任何帮助或见解都将不胜感激。

1 个答案:

答案 0 :(得分:0)

尽管您不希望再次从评论中听到它,但您有一个重复的company名称。请注意,这并不意味着整个记录都是重复记录,但是当您在公司上添加唯一记录时,每条记录都必须具有唯一的company。我猜你有时候每家公司都有不止一个潜在客户入场券。

要验证,请尝试以下操作:

 SELECT count(company), count(distinct company) FROM prospects;

如果这些数字相同,那么好,你赢了,你在同一家公司没有多于一条记录,但我确信它们会有所不同。

要准确找出哪些是重复项,您可以这样做:

 SELECT company, count(company) AS counter 
  FROM prospects 
    GROUP BY company
  HAVING counter > 1;

如果您只是想要公司快速查找client_id,请删除UNIQUE并使用常规密钥。

 ALTER TABLE acceler6_accelrefer.prospects ADD KEY company_ui (company);