type
status
date
slug
summary
tags
category
icon
password
MySQL 在 8.0 之前有一個歷史悠久的 Bug #199 ,該 BugInnodb 中具有 auto_increment 欄位的 Table,因為 auto_increment 是寫在內存沒有持久化的,所以在重啟 MySQL 後會透過 SELECT MAX(id)+1 FROM table 的結果更新這些 Table 的 auto_increment 值,導致 auto_increment 值有重複使用的問題,因而在某些場景下會產生問題,例如:MS切換、歷史資料遷移......等。

重現

解決方案

  1. 升級到 MySQL 8.0 版本,8.0版本透過 redo log 和一個新的 InnoDB 系統表解決了這個 BUG
  1. 自行持久化 auto_increment,建立修改 auto_increment 值的 SP,並透過寫入 init-file 暫時緩解。

    參考