小技能GET:如何重置MySQL中表中自增列的初始值
Django中如果model.py写为AUTOFiled,id就会自增。但是用delete删除以后,新增的数据id只会接着往下排列。于是…
首先报上一波,我开发的运行环境
运行环境 Runtime environment
1 | 操作系统 : Ubuntu18.04LTS |
背景
在mysql的数据库设计中,一般都会设计自增的数字列,用作业务无关的主键。 在数据库出现频繁的删除操作或者清空操作之后,其自增的值仍然会自动增长,如果需要重新开始该如何做呢?
解决方案
- alter table
delete from table_name;
ALTER TABLE table_name AUTO_INCREMENT = 1;
如果数据库表中的数据很多,则删除操作会持续比较久,这个问题需要注意。
- truncate
truncate table_name;
直接清空数据,但是由于不能回滚,所以此操作是危险的,使用时需要谨慎。
两者的比较
主要的区别如下:
truncate速度快,不做日志记录,故无法进行rollback操作。 delete反之;
truncate会重置索引和自增初始值, delete则不会;
truncate不会触发trigger,而delete则会触发。
以下是使用python的MySQLdb模块实现的方法实例
1 | import MySQLdb |
这个代码只是一个样例,对于整个操作来讲,它只是一个部分,仅作参考。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 快乐咸鱼のRaXianch窝!
评论
WalineValine