1

编辑:我是木偶。因此,在仔细搜索了我试图插入的行之后,我的代码中有一个错误,这意味着正在插入空字符串。因为这种情况不止一次发生,所以 MySQL 非常正确地抛出了一个错误,因为我试图再次插入相同的数据。很抱歉浪费了任何时间!模组,请随意删除。

我的表结构如下:

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 - 键 1 的重复条目 'groupA'。如果我尝试一次插入一两行似乎没问题,但我目前正尝试一次性插入 140 行。

谢谢!

4

2 回答 2

2

您不能使用“组”作为列名,因为它是保留字。

我更改了列名,您的查询就可以正常工作,因为它应该。

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

于 2012-12-11T02:06:17.073 回答
0

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

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

请注意,它显示了创建索引的所有列的值。

我认为您在列组上有另一个索引。

于 2012-12-11T02:46:26.837 回答