关于 mysql 主键自增问题

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; // 添加主键自增

至于如何用代码实现 主键自增的重置, 欢迎大家留言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值