ALTER TABLE tbl_name AUTO_INCREMENT = N;
N 必須 **大於當前表中最大 ID**,否則無效(MySQL 會忽略)。ALTER TABLE test AUTO_INCREMENT = 151;ALTER TABLE test AUTO_INCREMENT = 1;CREATE TABLE test (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(15) NOT NULL
) AUTO_INCREMENT = 100;
TRUNCATE TABLE tbl_name;
SHOW VARIABLES LIKE 'auto_inc%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+
SET @@auto_increment_increment = 2; -- 步長
SET @@auto_increment_offset = 1; -- 起始偏移(Master1)
-- Master2 設 offset=2,即可產生奇/偶 ID 不衝突
[mysqld]
auto_increment_increment = 2
auto_increment_offset = 1
修改後 systemctl restart mysqld。
NULL 或 0 → 自動產生下一個序列值。>= 現有最大值 → 接受該值,下一個自增值 = 插入值 + 1(可跳號)。< 現有最大值 → 若衝突報錯(Duplicate entry),不衝突則接受,下一個自增值不變。UPDATE 修改自增欄位同理:衝突報錯,大於最大值則推進計數器。REPLACE / INSERT ... ON DUPLICATE KEY UPDATE 可能導致自增值「燒號」(預分配未使用)。MAX(id)+1),8.0 將計數器寫入 Redo Log,**重啟不再跳號**。innodb_autoinc_lock_mode(預設 2:interleaved)影響並發插入時的自增分配策略。重置自增值首選 ALTER TABLE ... AUTO_INCREMENT=N(N > 當前最大 ID);清空表可用 TRUNCATE。主從雙主/多主架構**必須配置 auto_increment_increment/offset 避免 ID 衝突**。MySQL 8.0 已解決重啟跳號問題,升級即享紅利。