【发布时间】:2012-10-19 09:52:16
【问题描述】:
我正在使用 MySQL 5.1.56,MyISAM。我的桌子是这样的:
CREATE TABLE IF NOT EXISTS `my_table` (
`number` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`money` int(11) NOT NULL,
PRIMARY KEY (`number`,`name`)
) ENGINE=MyISAM;
它包含这两行:
INSERT INTO `my_table` (`number`, `name`, `money`) VALUES
(1, 'S. Name', 150), (2, 'Another Name', 284);
现在我正在尝试插入另一行:
INSERT INTO `my_table` (`number`, `name`, `money`) VALUES
(2, 'S. Name', 240);
而 MySQL 在告诉我这个时不会插入它:
#1062 - Duplicate entry '2-S. Name' for key 'PRIMARY'
我真的不明白。主键在前两列(它们都是),所以我尝试插入的行有一个唯一的主键,不是吗?
我尝试修复表,尝试优化表,均无济于事。另请注意,我无法从 MyISAM 更改为 InnoDB。
我是否遗漏了什么或者这是 MySQL 或 MyISAM 的错误?谢谢。
总结并指出我认为问题所在(即使不应该存在): 表在两列上有主键。我正在尝试在这两列中插入具有新值组合的行,但第一列中的值已经在某行中,第二列中的值已经在另一行中。但它们并没有在任何地方结合在一起,所以我相信这应该可以工作,但我很困惑地看到它没有。
【问题讨论】:
-
那些是 exact 架构和 exact
INSERTs?如果没有,我们可能会叫错树!请提供可重现的测试用例。 -
我的问题是我的
INSERT查询没有指定使用哪个数据库,并且默认数据库有一个同名的表。
标签: mysql primary-key mysql-error-1062 duplicates