到目前为止,我还是遇到过这样的几次,但仍然不明白(我的MySQL内部技能等于无)。在MySQL中导致重复PK的原因是什么?
我知道这可能是PEBKAC,但试图手动复制行为最终会出现错误(自动增量)。
CREATE TABLE `foo_bar` (
`id` int(12) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(12) unsigned DEFAULT NULL,
`order_id` int(12) unsigned DEFAULT NULL,
`email_address` varchar(50) DEFAULT NULL,
`mobile_number` varchar(20) DEFAULT NULL,
`message` longtext NOT NULL,
`message_received` int(12) unsigned DEFAULT NULL,
`failed_to_send` tinyint(1) unsigned DEFAULT NULL,
`fraudulent_activity` tinyint(1) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=ARCHIVE DEFAULT CHARSET=utf8;
我觉得这很难相信。主键,根据定义是唯一的,甚至不应该允许NULL值。如果MySQL允许这样做,我怀疑任何人会认为MySQL是认真的。 – Icarus 2012-03-12 20:14:04
你可以发布你的创建表脚本吗? – ntziolis 2012-03-12 20:14:09
我假设表有多个PK。如果一个表有两个PK,那么它将创建一个两列值的字符串,并加入。然后唯一性就是基于这个价值。所以如果你在'x'和'y'上有一个PK,你可以有'x - > 1,y - > 1'和'x - > 1,y - > 2',但是如果你尝试'x - > 1,y - > 1'(同样适用于'y')。 – Marshall 2012-03-12 20:17:03