📘

複数人開発するときのDBマイグレーション

2022/02/22に公開

新規開発でDBマイグレーションツールにsql-migrateを導入したところ課題が出てきたのでポエムという形で残そうと思う。
主張としては「数人で新規開発するときはよくあるマイグレーションツールより緩いチェックのマイグレーションツールが欲しい」というものだ。

課題1:別ブランチで作ったマイグレーションファイルが適用されている

ナンバリングが被ったり、先にマイグレーションファイルを作っていて、あとから別の人が作成したファイルが適用される場合などにうまく動作しないことがある。(すでに適用済みか、スルーされたり、適用済みのファイルがないとエラーになったりする)
専属のデータベース管理者がいて一人でマイグレーションを行ったり管理するのであれば問題ないが、開発環境に1DBしかなく、複数人で開発する場合は上記のケースはよくあることだと思う。

課題2:テーブル定義を作ったがミスがあった場合

ある程度DB設計して、APIも作り始めたころに、「そういえばintにしてたけどtinyintで済むな」とかテーブル定義を変更したいことがある。
機能追加によるカラム修正なら新規マイグレーションファイルを作ってalter文を発行するところだが、ミスや漏れの場合は元のDDL自体を書き換えたい。
その場合マイグレーションでは禁じ手だが「特定のファイルだけdown、up」させたい。

まとめ

とまあマイグレーションツールを使っていて辛みみたいなものを書いてみた。
同じような意見があるようであれば、薄いマイグレーションツールを作ってみようかと思う。
もしくはよいツールがあれば教えて欲しい。

Discussion