我正在使用 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 的错误?谢谢。
总结并指出我认为问题出在哪里(即使不应该存在): 表在两列上有主键。我正在尝试在这两列中插入具有新值组合的行,但第一列中的值已经在某行中,第二列中的值已经在另一行中。但它们并没有在任何地方结合在一起,所以我相信这应该有效,但我很困惑地看到它没有。