编辑:我是一个布偶。因此,在仔细拖网我试图插入的行之后,我的代码中出现了一个错误,意味着插入了空字符串。因为这不止一次发生,MySQL非常正确地抛出错误,因为我试图再次插入相同的数据。对不起浪费时间! Mods,随意删除它。
我的表格结构如下:
CREATE TABLE IF NOT EXISTS `foo` (
`user` varchar(80) NOT NULL,
`group` varchar(20) NOT NULL,
`completed` int(1) NOT NULL,
PRIMARY KEY (`user`,`group`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
现在,当我尝试进行MySQL插入时,它会抛出错误,说我有重复项(使用密钥设置,赢得了工作)。我没有得到的是我看到这些错误的原因。我知道我没有插入这些复合值的副本(尽管某些值会在组列中多次出现。
我的插入示例:INSERT INTO food(user, group, completed) VALUES ('user1', 'groupA', '0'),('user2', 'groupB', '0'),('user3', 'groupA', '0');
因此用户和组合的组合绝对是唯一的。那么为什么抱怨我试图插入一个非唯一键呢?
我得到的错误是:#1062 - 重复录入' groupA'对于密钥1.如果我一次尝试插入一行或两行似乎没问题,但我目前正试图一次插入140行。
谢谢!
答案 0 :(得分:2)
您不能将“group”用作列名,因为它是一个保留字。
我更改了列名称,您的查询就可以正常工作了。
由于您已经完全“混淆”了您的实际SQL,因此您完全有可能编辑出导致错误的拼写错误。
答案 1 :(得分:0)
您的密钥不是复合的。我适合复合错误就像这样
ERROR 1062 (23000): Duplicate entry 'user1-groupA' for key 'PRIMARY'
注意,它显示了构成索引的所有列的值。
我认为你在列组中有另一个索引。