MySQL 引擎
innodb引擎(低版本):Innodb表中把自增列作为主键ID时,自增列是通过auto-increment计数器实现的,计数器的最大值是记录到内存中的,重启数据库后,会导致auto-increment计数器重置,从而会导致主键ID重置。
MyISam引擎:MyISAM表会把自增列(auto-increment计数器)最大值是记录到数据文件里,重启MySQL自增列(计数器)最大值不会丢失,从而使用自增列作为主键ID时也不会丢失。
MySQL 一般使用 innodb 引擎,数据库重启后,主键自增可能会丢失,因为这个引擎使用 auto-increment计数器进行主键自增,值保存在内存中
MyISam 引擎的值保存在系统表中,不会丢失
查看数据库当前使用的引擎
SHOW ENGINES;
更改引擎方式一: 修改配置文件my.ini
将my-small.ini另存为my.ini,在[mysqld]最后添加为上default-storage-engine=InnoDB,重启服务,数据库默认的引擎修改为InnoDB
更改引擎方式二: 在建表的时候指定或者建完表修改
-- 建表的时候指定
create table mytbl(
id int primary key,
name varchar(50)
)type=MyISAM;
-- 建完表后修改
alter table mytbl2 type = InnoDB;
目前只知道通过 SQL 语句对主键自增进行重置
ALTER TABLE account MODIFY id INT; // 取消主键自增
ALTER TABLE account MODIFY id INT AUTO_INCREMENT; // 添加主键自增
至于如何用代码实现 主键自增的重置, 欢迎大家留言