MySQL重置服务重启表的AUTO INCREMENT

时间:2011-05-23 12:58:06

标签: mysql innodb auto-increment

我有MySQL(InnoDB)数据库,在重新启动服务时会重置它的自动增量值。这会导致重复的主键插入失败。

直到最近才发生这种情况。当一位同事意外地从数据库中删除一个表时,它就开始发生了。单个表是从备份中恢复的,但结构稍有变化(整数用double替换,vchars有点大),每次重启mysql服务时自动增量都会重置。

表格的创建架构是:

CREATE TABLE `caseattachments` (
  `CaseAttachmentId` double NOT NULL AUTO_INCREMENT,
  `CaseId` double DEFAULT NULL,
  `CaseEventId` double DEFAULT NULL,
  `OriginalFileName` varchar(768) DEFAULT NULL,
  `OriginalFileMimeType` varchar(768) DEFAULT NULL,
  `OriginalFileSize` double DEFAULT NULL,
  `NewFileName` varchar(768) DEFAULT NULL,
  `Created` datetime DEFAULT NULL,
  PRIMARY KEY (`CaseAttachmentId`)
) ENGINE=InnoDB AUTO_INCREMENT=6589 DEFAULT CHARSET=latin1;

为什么每次重启服务时都会重置自动增量?

更新

对此的修复相当简单(在我的情况下)我删除了表并重建它以使用Id的整数。这似乎解决了这个问题。如果我有一张大桌子,我不确定会有什么修复,希望我不需要找出答案。

1 个答案:

答案 0 :(得分:1)

它在这里:

AUTO_INCREMENT=6589

你的索引已经重置为6589,并且会重复到达可用的数字,要么取出它,要么确保它的1+是表格中的最后一个id。

因此,如果最后一行的id为98120,则yuu需要将其更改为

AUTO_INCREMENT = 98121

还是我说明显了?

如果它是当前问题并且您需要修复实时表,请执行以下操作:

ALTER TABLE caseattachments AUTO_INCREMENT = 98121