既有表 sm_position 已有 1133 筆資料(ID 1~1133),新資料 CSV 也是從 1 開始,直接匯入會主鍵衝突。需將新資料 ID 整體偏移至 1134 起。
CREATE TABLE TABLE_1 (
ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(5) NOT NULL
) AUTO_INCREMENT = 100; -- 從 100 開始自增
也可事後修改:
ALTER TABLE table_name AUTO_INCREMENT = 1134;
注意:AUTO_INCREMENT = N 僅能設定為 大於現有最大 ID 的值,小於無效。
若必須在資料庫內直接修改既有 ID(如合併分庫分表):
-- 1. 關閉外鍵檢查
SET FOREIGN_KEY_CHECKS = 0;
-- 2. 從大到小更新,避免主鍵衝突
UPDATE sm_position SET id = id + 10000 ORDER BY id DESC;
-- 3. 重設自增起點
ALTER TABLE sm_position AUTO_INCREMENT = 20000;
-- 4. 恢復外鍵檢查
SET FOREIGN_KEY_CHECKS = 1;
警告:修改主鍵值會破壞外鍵關聯、觸發器、應用程式邏輯,極度不建議在線上直接操作,除非完全掌握影響範圍且有完整備份。