Migration
資料庫遷移/結構變更腳本
01你是不是遇到這個 / THE SYMPTOM
我想加一個新欄位、或改表格結構,但又怕直接去資料庫手動改,下次部署或別人電腦上對不起來。我想要一個「可重現、有版本、團隊每個人跑了結果都一樣」的改表方式。
↑ 如果你點頭了,你要的關鍵字就是 Migration。
02這是什麼 / DEFINITION
Migration 是把資料庫結構變更(新增/修改欄位、建表、加索引等)寫成有版本、可依序執行的腳本檔,讓每個環境(本機/測試/正式)都能照同一順序套用到相同結構,像是資料庫結構的 Git 版本控制。
03什麼時候用 / WHEN TO USE
任何需要改動資料庫 schema 的時候,尤其是團隊協作或多環境部署。新增欄位、改型別、建新表、加索引都該走 migration,而不是手動上 SQL。
04怎麼跟 AI 說 / HOW TO ASK
直接複製這句、貼進 Claude Code / Cursor / Copilot / ChatGPT:
幫我寫一個 migration,在 orders 表新增一個 status 欄位(預設值 'pending'),並附上對應的 rollback(down)讓我能還原這次變更。
05常見坑 / WATCH OUT
⚠ 別小看「往回退(down/rollback)」:很多人只寫往前的變更,出事時無法乾淨還原。另外在正式環境對大表做變更(如加欄位、改型別)可能鎖表造成停機,要查該資料庫的「線上 schema 變更」做法。Migration(改結構)跟 seed(塞測試資料)是兩回事,別混在一起。
06相關的詞 / RELATED