你的数据库表可以定义为数字自动递增的主键,MySQL将采取照顾其独特的价值,同时插入新行。
创新互联建站自2013年创立以来,我们提供高端网站建设、小程序定制开发、电商视觉设计、app软件开发及网络营销搜索优化服务,在传统互联网与移动互联网发展的背景下,我们坚守着用标准的设计方案与技术开发实力作基础,以企业及品牌的互联网商业目标为核心,为客户打造具商业价值与用户体验的互联网+产品。
每次添加一个新行,MySQL的增量值自动,它坚持以表。但有时你可能需要重置AUTOINCREMENT列值1。说你写一个示例应用程序,你已经有几行插入表中。现在要删除这些行,并自动增量列复位,使新行插入将有主键的值1 1。
有几个方法来实现这一点。
1。直接复位自动增量值
ALTER TABLE语法提供了一种方法来重新设置自动增量列。采取看看下面的例子。
ALTER TABLE table_name AUTO_INCREMENT = 1;
请注意,你不能重置计数器的值小于或等于任何已使用的。对于MyISAM,如果该值小于或等于目前在AUTO_INCREMENT列的最大值,该值是目前最大的加一复位。对于InnoDB,如果该值大于当前列中的最大值,没有出现错误和不改变当前序列值。
2。截断表截断表自动增量值自动复位为0。
TRUNCATE TABLE table_name;
谨慎使用。用于截断时,任何的AUTO_INCREMENT计数器复位到零。从MySQL 5.0.13上,AUTO_INCREMENT计数器复位为零的TRUNCATE TABLE,而不管是否有一个外键约束。
一旦发射TRUNCATE是,表处理不记得过去使用的AUTO_INCREMENT值,但从头开始计数。这是真实的,甚至对于MyISAM和InnoDB,通常不重用序列值。
3。下降和重新创建表
这是另一种方式下重启自动增量指数。虽然不是很理想。
DROP TABLE table_name;
所有这些技术的价值技术重置自动增量列数。使用任何适合你的要求。
1.
支持设置自增列的值
ALTER
TABLE
table_name
AUTO_INCREMENT
=
1;
不过这种方式只能设置大于当前使用的值,不能设置小于等于当前已经使用的自增列的值。myisam如果设置小于等于,则自增列的值会自动设置为当前最大值加1。innodb则不会改变。
2.通过TRUNCATE把自增列设置为0,从MySQL
5.0.13开始TRUNCATE就能重置自增列为0.myisam和innode都是如此。
TRUNCATE
TABLE
table_name;
注意:TRUNCATE
会清空表中数据
3.drop和create重建表方式重置自增列为0
DROP
TABLE
table_name;
CREATE
TABLE
table_name
{
...
};
开始--》运行--》cmd
进入mysql安装目录的bin文件夹(客户都没设置环境变量找不到mysql命令只能到那个目录)
比如:D:\Program Files\MySQL\MySQL Server 5.0\bin
1.暂停mysql服务;
2.忽略授权问题;
3.另一个命令行进去myql;
4.重置root密码并刷新授权表;
5.任务管理器杀掉mysql进程;
6.重启mysql服务;
net stop mysql
mysqld --skip-grant-tables
开另外一个命令行窗口,一样进入那个目录
mysql -u root -p
update mysql.user set password=PASSWORD("新密码") where User="root";
flush privileges;
任务管理器杀掉mysql进程
net start mysql
#################################################################
vi /etc/my.cnf 在[mysqld]添加
skip-grant-tables
/etc/init.d/mysql restart
mysql
update mysql.user set password=PASSWORD("新密码") where User="root";
flush privileges;
/etc/init.d/mysql restart
重置主键自增,前提是这个表中的数据 必须清空。
如果清空后还是不能重置的,那么删掉表,重建。
有两种方法,一种方法使用mysql的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具。前者使
用起来比较简便。推
荐使用。
1. check table 和 repair table
登陆mysql 终端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话,可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ] /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动!检测修复所有数据库(表)