2025/12/15
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.うまく実行できました!