我正在尝试将大量用户插入到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','','');
答案 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
插入或0
和null
的两个插入内自动增加密钥。不要依赖此设置,因为如果更换服务器,代码可能会中断
如果您插入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)
首先删除主键:(主键是您的责任)
ALTER TABLE Persons ADD PRIMARY KEY (P_Id);
然后进行所有插入:
添加新的主键就像放弃之前一样:
{{1}}