MySQL表ID重新排序(不清除表数据)
代码如下(示例):
ALTER table 表名称 AUTO_INCREMENT = 1;
set @i = 0;
update 表名称 set id = (@i:=@i+1);应用代码,主意table_name需要被替换成你需要改的表名,一共三处!
ALTER TABLE table_name AUTO_INCREMENT = 1;
SET @num := 0;
UPDATE table_name SET id = @num := (@num+1);
ALTER TABLE table_name AUTO_INCREMENT = 1;总结
无特殊情况 最好不用---truncate
truncate无法通过binlog回滚。
truncate会清空所有数据且执行速度很快。
truncate不能对有外键约束引用的表使用。
执行truncate需要drop权限,不建议给账号drop权限。
执行truncate前一定要再三检查确认,最好提前备份下表数据。