2025/12/15

Supabaseのマイグレーションで特定のファイルのみ実行させる方法

Supabase

実行させたくないマイグレーションファイルを実行済みとマークすることでマイグレーションを実行させないようにすることができます。

まずは確認のためにリンクしているプロジェクトのマイグレーション履歴を表示してみます。

bun supabase migration list

Local          | Remote         | Time (UTC)
  ----------------|----------------|---------------------
                  | 20250526055349 | 2025-05-26 05:53:49
                  | 20250526060135 | 2025-05-26 06:01:35
                  | 20250526061401 | 2025-05-26 06:14:01
                  | 20250526061556 | 2025-05-26 06:15:56
                  | 20250527042243 | 2025-05-27 04:22:43
                  | 20250602005257 | 2025-06-02 00:52:57
                  | 20250602011023 | 2025-06-02 01:10:23
                  | 20250602021550 | 2025-06-02 02:15:50
                  | 20250602041803 | 2025-06-02 04:18:03
   20251119081728 |                | 2025-11-19 08:17:28
   20251125055151 |                | 2025-11-25 05:51:51
   20251211041636 |                | 2025-12-11 04:16:36

このようにRemoteで実行済みのものとLocalでのみあるマイグレーション一覧が表示されます。

今回は一番最後の「20251211041636」のみを実行させます。

実行させたくないマイグレーションを実行済みとしてマークする

実行済みとしてマークするにはrepairコマンドを使用します。

bun supabase migration repair --status applied 20251119081728
bun supabase migration repair --status applied 20251125055151

実行できたらマークされているか確認します。

bun supabase migration list

 Local          | Remote         | Time (UTC)
  ----------------|----------------|---------------------
                  | 20250526055349 | 2025-05-26 05:53:49
                  | 20250526060135 | 2025-05-26 06:01:35
                  | 20250526061401 | 2025-05-26 06:14:01
                  | 20250526061556 | 2025-05-26 06:15:56
                  | 20250527042243 | 2025-05-27 04:22:43
                  | 20250602005257 | 2025-06-02 00:52:57
                  | 20250602011023 | 2025-06-02 01:10:23
                  | 20250602021550 | 2025-06-02 02:15:50
                  | 20250602041803 | 2025-06-02 04:18:03
   20251119081728 | 20251119081728 | 2025-11-19 08:17:28
   20251125055151 | 20251125055151 | 2025-11-25 05:51:51
   20251211041636 |                | 2025-12-11 04:16:36

「20251119081728」と「20251125055151」がマークされているのが分かります。

マイグレーションを実行する

実行させたくないファイルをマークできたのでマイグレーションを実行してみます。

bun supabase db push

Remote migration versions not found in local migrations directory.

Make sure your local git repo is up-to-date. If the error persists, try repairing the migration history table:
supabase migration repair --status reverted 20250526055349 20250526060135 20250526061401 20250526061556 20250527042243 20250602005257 20250602011023 20250602021550 20250602041803

エラーが出てしまいました。
これはローカルのマイグレーション履歴と食い違いがあるため実行できないようです。
出力された解決方法をそのまま実行して、リモートの履歴をローカルに合わせます。

bun supabase migration repair --status reverted 20250526055349 20250526060135 20250526061401 20250526061556 20250527042243 20250602005257 20250602011023 20250602021550 20250602041803

bun supabase migration list

 Local          | Remote         | Time (UTC)
  ----------------|----------------|---------------------
   20251119081728 | 20251119081728 | 2025-11-19 08:17:28
   20251125055151 | 20251125055151 | 2025-11-25 05:51:51
   20251211041636 |                | 2025-12-11 04:16:36

再度マイグレーションを実行してみます。

bun supabase db push

....
Finished supabase db push.

うまく実行できました!

最後に

株式会社Robbitsでは一緒に働く仲間を募集しています!
ご興味のある方は是非一度ホームページをご覧ください!

ホームページを見てみる