Supabaseローカル環境へ手動で作成中のマイグレーションファイルを反映させる手順
未完成のマイグレーションファイルをお試しでローカル環境に適用したいときの手順。supabase cli経由だと特定のマイグレーションファイルのみ実行ができなかったので書いた。
結論
下記手順で進めるとスムーズ
-
supabase db dump --local --data-only --file $BACKUP_FILE
コマンドでデータのみのバックアップを取得 - supabase studio(ローカル環境)の
SQL Editor
でマイグレーションを実行 -
supabase db reset
で初期化 - 1で取得したバックアップを復元し、元の状態に戻す
- マイグレーションファイルが完成するまで2-4を繰り返す
- 完成したら2-4で元の状態に戻し、
supabase migration up
でマイグレーションを適用
バックアップの取得
最終的に元の状態に戻したいので下記コマンドでバックアップを取得
supabase db dump --local --data-only --file $BACKUP_FILE
--data-only
フラグでデータのみのバックアップにすること。じゃないと supabase db reset
で初期化したときに実行されたマイグレーションと競合して復元できなくなるので注意
マイグレーションを手動で実行
supabase studio(ローカル環境)にブラウザでアクセス。urlは supabase status
で確認できます。(私の環境だと http://127.0.0.1:54323
に割り当てられていました)
SQL Editor
を開き、作成したマイグレーションをコピペして実行。
supabase migration up
でも実行できるが、こっちでやるとマイグレーション履歴に取り込まれてしまうのでやり直しが面倒になる(直接履歴テーブルにアクセスして手動修正など)
初期化
supabase db reset
で初期化。このとき、 supabase/migrations
ディレクトリに作成途中のマイグレーションファイルがあると実行されてしまうので、忘れずに移動させておく
バックアップの復元
取得しておいたバックアップをSQL Editor
にコピペして実行。これでマイグレーション実行前に戻る
マイグレーションの適用
マイグレーションの手動実行 -> 初期化 -> マイグレーションの手動実行 ... を繰り返し、マイグレーションファイルが完成したら正式な手順で適用させる(じゃないと履歴にのらず、リモートへの反映が手間)
マイグレーションファイルを supabase/migrations/
に移動し、 supabase migration up
で適用
後はCI/CD経由でリモート環境に反映させてもいいし、 supabase db push
を手動実行してもいいし、お好きな方法で反映させて終了
終わりに
supabase cli入れれば supabase start
だけでローカル開発環境整うのでおすすめです!
Discussion