Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL错误-#1062-重复条目'';关键2_Mysql_Database - Fatal编程技术网

MySQL错误-#1062-重复条目'';关键2

MySQL错误-#1062-重复条目'';关键2,mysql,database,Mysql,Database,我正在尝试向MySQL数据库插入大量用户列表,但每次尝试时都会出现错误: #1062 - Duplicate entry '' for key 2 这是因为第2列在很多条目上都是空白的,所以在第2列中插入一个空白条目后,就不允许我再添加另一个条目了。然而,当我昨天添加大多数列表时,我一次也没有收到这个错误,尽管我昨天添加的很多条目在第2列中也有一个空白单元格。发生什么事了 这是插入1个条目的sql代码。其余部分采用相同的格式: INSERT INTO users (`id`,`title`

我正在尝试向MySQL数据库插入大量用户列表,但每次尝试时都会出现错误:

#1062 - Duplicate entry '' for key 2
这是因为第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','','');

似乎第二列被设置为唯一索引。如果你不需要它,删除它,你的错误就会消失。可能是您错误地添加了索引,这就是为什么除了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
insert上或在
0
null
的两个插入上自动增加键。不要指望此设置,因为如果更改服务器,代码可能会中断。
如果插入
null
,代码将始终有效


请参阅:

,因为据说您有一个唯一的索引

然而,当我昨天添加大多数列表时,我一次也没有收到这个错误,尽管我昨天添加的很多条目在第2列中也有一个空白单元格。发生什么事了


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

检查表索引。 如果该字段获得了索引(例如B+树索引),那么此时update或insert查询将抛出此类错误


删除索引,然后尝试启动相同的查询。

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

我有一个有5行的表,我试图添加一个唯一的列,但失败了,因为所有5行都是空的,因此不是唯一的


我在没有唯一索引集的情况下创建了列,然后填充数据,然后将其设置为唯一,所有操作都正常。

查询键2的错误“重复条目”338620-7。默认数据库

对于此错误:

set global sql_slave_skip_counter=1; 
start slave; 
show slave status\G
这对我很有效

您可以尝试添加

$db['db_debug'] = FALSE; 
在“yourdatabase file.php”中,然后可以根据需要修改数据库

  • 先放下主键:(主键是你的责任)

  • 然后进行所有插入:

  • 添加新的主键,就像删除之前一样:

    ALTER TABLE Persons ADD PRIMARY KEY (P_Id);
    

  • 没有添加唯一索引吗?请在该表上执行
    SHOW CREATE TABLE
    ,以便我们可以查看架构。谢谢。你是对的。这与一个独特的专栏有关。我只是感到疲倦和迟钝,完全错过了它。谢谢你提醒我:)@Sabeen,-1因为这不是第二栏,而是第一栏<代码>'被转换为0,如果MySQL未设置为在0 insert时触发自动增量,它将复制insert 0,请参见下面的答案。@Johan。。。op说,
    它给了我这个,因为第2列在很多条目上是空白的,所以在第2列插入一个空白条目后,它不允许我再添加一个。
    。。所以我相信了他的话,我想OP已经:零上没有自动值设置为true。@nutman,这是因为SQL中
    null=null
    false
    ,所以“复制”null不会在查询中产生命中率。MySQL允许在一个唯一字段中有多个
    null
    值,前提是该字段定义为
    null
    。如果字段被定义为
    非空
    ,则不允许有空。@ypercube:我相信这是很明显的。如果列为
    NOT NULL
    ,则无论
    UNIQUE
    或任何其他约束,都不允许使用
    NULL
    值。仅为了我自己的确认,我刚刚在主自动增量列上尝试了“”,查询运行正常,mysql自动输入正确的自动增量值。你能给我看一些你所说的参考资料吗?你想确保我下次记住这点吗?@Sabeen,从这一页:
    自动增量的行为取决于零SQL模式上的无自动值:第5.1.6节,“服务器SQL模式”。
    @Johan,这些设置弊大于利。我想知道他们为什么还要费心把它们添加到MySQL中。
    ALTER TABLE Persons ADD PRIMARY KEY (P_Id);