MySQL INSERT与复合键

时间:2012-12-11 01:56:40

标签: mysql

编辑:我是一个布偶。因此,在仔细拖网我试图插入的行之后,我的代码中出现了一个错误,意味着插入了空字符串。因为这不止一次发生,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行。

谢谢!

2 个答案:

答案 0 :(得分:2)

您不能将“group”用作列名,因为它是一个保留字。

我更改了列名称,您的查询就可以正常工作了。

由于您已经完全“混淆”了您的实际SQL,因此您完全有可能编辑出导致错误的拼写错误。

答案 1 :(得分:0)

您的密钥不是复合的。我适合复合错误就像这样

ERROR 1062 (23000): Duplicate entry 'user1-groupA' for key 'PRIMARY'

注意,它显示了构成索引的所有列的值。

我认为你在列组中有另一个索引。