MySQL修改表自增ID(AUTO_INCREMENT)
今天有一张数据库表新加了一条数据,后来想把这条数据ID值调小了。因为ID值有特殊用处(在程序代码中有特殊判断)
表结构如下:
CREATE TABLE `AdminGroup` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL COMMENT '角色名',
`timeLastModified` datetime DEFAULT NULL COMMENT '最近修改时间',
`timeCreated` datetime NOT NULL COMMENT '创建时间',
`description` varchar(254) DEFAULT NULL COMMENT '描述',
`rights` text COMMENT '权限',
`rightsText` text COMMENT '权限描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='管理员角色'
id在10以下的未完成用完,刚加的一条数据id为15,这个id值改为5,其实15这个值(AUTO_INCREMENT=16,16是下次新添加数据的id值)相当于未使用
有强迫症的我。想自增id既然没就自增值改回去。网上一堆的修改方法
ALTER TABLE AdminGroup AUTO_INCREMENT = 15;
然后看到是执行成功了,但查看表结构依然没变化。
后来发现
在InnoDB引擎下,如果修改的目标值小于当前数据库中ID的最大值,则数据库不会有任何变化。
在MyISAM引擎下,如果修改的目标值小于当前数据库中ID的最大值,则AUTO_INCREMENT会被设置为该最大值。
我的表结构是InnoDB类型,改小所以没变化, 所以我就先把表引擎改为MyISAM, 调整AUTO_INCREMENT, 然后再改为InnoDB
ALTER TABLE AdminGroup ENGING = InnoDB;
ALTER TABLE AdminGroup AUTO_INCREMENT = 15;
ALTER TABLE AdminGroup ENGING = MyISAM;