Go 專案的資料庫遷移:手寫 .sql 檔案,一次變更怎麼走到生產
Go 服務新版本上線,日誌裡刷出 column "coupon_code" does not exist:加列的 SQL 寫了,生產庫沒人執行。順著這個現象往下追:手寫的 .sql 檔案怎麼交給 golang-migrate 和 goose 去執行,執行到一半失敗了庫裡留下什麼,兩個分支各加一個檔案時會不會漏掉一個,一個 .sql 從提交、CI、打包到部署要走哪幾步、由誰來執行,一條只改後設資料的 ALTER 為什麼能把整張表堵住,新舊程式碼同時線上時列名怎麼跨幾個版本改,只宣告終態讓 Atlas、sqldef、pg-schema-diff、Skeema 自動算變更行不行,最後是 down 檔案到底能不能用來回滾。