MySQL错误 - #1062 - 密钥2的重复条目''

时间:2011-05-27 14:18:09

标签: mysql database

我正在尝试将大量用户插入到MySQL数据库中,但每次尝试我都会收到错误:

#1062 - Duplicate entry '' for key 2

它给了我这个,因为第二列在很多条目上都是空白的,所以在第2列中插入一个空白条目后,它不会让我添加另一个。但是,当我昨天添加大部分列表时,即使我昨天添加的很多条目在第2列中也有一个空白单元格,但我没有得到此错误。这是怎么回事?

这是插入1个条目的sql代码。其余的采用相同的格式:

INSERT INTO users
  (`id`,`title`,`firstname`,`lastname`,`company`,`address`,`city`,`county`
   ,`postcode`,`phone`,`mobile`,`category`,`email`,`password`,`userlevel`) 
VALUES     
  ('','','John','Doe','company','Streeet','city','county'
  ,'postcode','phone','','category','emial@email.co.uk','','');

8 个答案:

答案 0 :(得分:17)

除了Sabeen的回答:

第一列ID是您的主键 不要将''插入主键,而是插入null。

INSERT INTO users
  (`id`,`title`,`firstname`,`lastname`,`company`,`address`,`city`,`county`
   ,`postcode`,`phone`,`mobile`,`category`,`email`,`password`,`userlevel`) 
VALUES     
  (null,'','John','Doe','company','Streeet','city','county'
  ,'postcode','phone','','category','emial@email.co.uk','','');

如果是自动增量键,这将解决您的问题 如果不使id成为自动增量键,并始终将null插入其中以触发自动增量。

MySQL有一个设置,只能在null插入或0null的两个插入内自动增加密钥。不要依赖此设置,因为如果更换服务器,代码可能会中断 如果您插入null,您的代码将始终有效。

请参阅:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

答案 1 :(得分:11)

似乎第二列被设置为唯一索引。如果你不需要删除它,你的错误就会消失。可能你错误​​地添加了索引,这就是为什么你今天看到错误并且昨天没有看到它们

答案 2 :(得分:2)

当我在列中已经存在重复数据时尝试将列设置为唯一时,或者如果您尝试添加列并在表中已有数据时将其设置为唯一时,我收到此错误。

我有一个包含5行的表,我尝试添加一个唯一的列,但它失败了,因为所有这5行都是空的,因此不是唯一的。

我创建了没有唯一索引集的列,然后填充数据然后将其设置为唯一且一切正常。

答案 3 :(得分:1)

据说你有一个独特的索引。

  

然而,当我昨天添加大部分列表时,即使我昨天添加的很多条目在第2列中也有一个空白单元格,但我没有得到此错误。怎么回事?

这意味着所有这些条目都包含值NULL,而不是空字符串''。 Mysql允许您在唯一字段中拥有多个NULL值。

答案 4 :(得分:1)

查看您的表索引。 如果该字段有索引(例如B +树索引)。那时更新或插入查询会抛出这些错误。

删除索引,然后尝试触发相同的查询。

答案 5 :(得分:1)

错误'重复输入' 338620-7'对于关键2'在查询。默认数据库

对于此错误:

set global sql_slave_skip_counter=1; 
start slave; 
show slave status\G

这对我有用

答案 6 :(得分:1)

您可以尝试添加

$db['db_debug'] = FALSE; 

在“您的数据库文件”.php之后,您可以根据需要修改数据库。

答案 7 :(得分:0)

  1. 首先删除主键:(主键是您的责任)

    ALTER TABLE Persons ADD PRIMARY KEY (P_Id);
    
  2. 然后进行所有插入:

  3. 添加新的主键就像放弃之前一样:

    {{1}}