關於 mysql 主鍵自增問題

2021-10-18 23:04:49 字數 970 閱讀 4735

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; // 新增主鍵自增

mysql 主鍵自增語句 MySQL 自增主鍵

以下僅考慮 innodb 儲存引擎。自增主鍵有兩個性質需要考慮 單調性每次插入一條資料,其 id 都是比上一條插入的資料的 id 大,就算上一條資料被刪除。連續性插入成功時,其資料的 id 和前一次插入成功時資料的 id 相鄰。自增主鍵的單調性 為何會有單調性的問題?這主要跟自增主鍵最大值的獲取方式...

關於mysql的int型主鍵自增問題

我們在使用mysql資料庫時,習慣使用int型作為主鍵,並設定為自增,這既能夠保證唯一,使用起來又很方便,但int型的長度是有限的,如果超過長度怎麼辦呢?我們先建立乙個測試表,建立語句如下 create table test1 id int primary keyauto increment nam...

MySQL設定主鍵自增和非主鍵自增

mysql 每張表只能有1個自動增長字段,這個自動增長字段即可作為主鍵,也可以用作非主鍵使用,但是請注意將自動增長字段當做非主鍵使用時必須必須為其新增唯一索引,否則系統將會報錯。例如 將自動增長字段設定為主鍵 create table t1 id int auto increment primary...