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