SHOW TABLE STATUS FROM db_name LIKE 'table_name'\G
-- 關鍵欄位:Auto_increment: 15355
或查詢 information_schema:
SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA='db' AND TABLE_NAME='table';
ALTER TABLE db.table AUTO_INCREMENT = 20000;
-- 獲取最大 ID
SELECT MAX(id) INTO @max_id FROM t;
-- 重置
SET @sql = CONCAT('ALTER TABLE t AUTO_INCREMENT = ', @max_id + 1);
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
原因:表中存在 id=0 或負數主鍵,重置時衝突。
解決:DELETE FROM t WHERE id <= 0; 後重試。
右鍵表 → Alter Table → Options → Auto Increment 輸入值 → Apply。
| 參數 | 說明 | 建議 |
|---|---|---|
| auto_increment_increment | 自增步長(主主同步用) | 單主留 1,雙主設 2、offset 錯開 |
| auto_increment_offset | 自增起始偏移 | 主1=1,主2=2 |
| innodb_autoinc_lock_mode | 自增鎖模式(0/1/2) | 2=interleaved 高併發,需 binlog_format=ROW |
Auto_increment / MAX(id) 比率,接近 1 時預警(防止耗盡)。auto_increment_increment/offset 或雪花算法)。