【问题标题】:Duplicate Key Error in phpAdminphpmyAdmin 中的重复键错误
【发布时间】:2018-03-03 15:15:40
【问题描述】:

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

表架构:

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 语句失败:

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

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

【问题讨论】:

  • 添加表 CREATE 架构和 PHPMyADMin 正在创建的实际插入语句,该语句会在您的帖子中生成错误,我们将能够确定问题。您可以运行show create table yourtablename; 来获取创建语句。
  • 您的数据可能是重复的。在将问题归咎于产品之前,请始终假设是您错了。
  • 谢谢雷。这是创建表 CREATE TABLE prospects (client_id int(11) NOT NULL AUTO_INCREMENT, company varchar(64) DEFAULT NULL, created_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (client_id), KEY @ 987654329@ (first_name,last_name) ) ENGINE=MyISAM AUTO_INCREMENT=1958 默认字符集=latin1
  • 这是尝试创建索引的 SQL。更改表acceler6_accelrefer.prospects 添加唯一company_ui (company);
  • 嘿影子,作为一名程序员,我很清楚这个概念,谢谢,但表中没有重复。

标签: mysql unique-constraint


【解决方案1】:

尽管您不想再从 cmets 听到它,但您有一个重复的 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);

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 2011-08-17
    • 2019-05-09
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多