我有一个像这样结构的表
CREATE TABLE `person` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(150) NOT NULL,
`pwd` varchar(50) NOT NULL,
`first_name` varchar(45) DEFAULT NULL,
`last_name` varchar(45) DEFAULT NULL,
`is_active` tinyint(4) DEFAULT '1',
`source` int(11) NOT NULL DEFAULT '1',
`language_id` int(11) DEFAULT NULL,
`create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified_date` timestamp NULL DEFAULT NULL,
`lastaccess_date` timestamp NULL DEFAULT NULL,
`image_id` int(11) DEFAULT NULL,
PRIMARY KEY (`uid`),
UNIQUE KEY `person_idx_1` (`email`),
KEY `person_fk_1` (`source`),
KEY `person_fk_2_idx` (`image_id`),
CONSTRAINT `person_fk_1` FOREIGN KEY (`source`)
REFERENCES `person_source` (`uid`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `person_fk_2` FOREIGN KEY (`image_id`)
REFERENCES `image` (`uid`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=200002 DEFAULT CHARSET=latin1;
此表中曾经有大约190000条记录。我只是使用proc删除(以反向FK顺序)所有用户,但在此数据库中为7进行一些目标测试。数据修剪后,我无法将数据插入此表。我收到以下错误:
Error Code: 1062. Duplicate entry 'XXXXX' for key 'PRIMARY'
我能够通过将表的自动增量更改为200000(注意我的show create table
输出为200002)来修复此问题,我知道这将在删除数据之前的最后一条记录之后。
我知道为什么我的修复有效,但我的问题是发生了什么?为什么表中不再存在记录时会出现自动增量错误?另外,为什么自动增量值仍然处于原始的更高值?
非常感谢!