2025/07/21

Supabaseのマイグレーション機能を使用する

Supabase

いままでSupabaseのデータベースの作成や変更はGUIを使用していましたが、SupabaseCLIからマイグレーションファイルを作成して操作できるようなので試してみたいと思います。

準備

・SupabaseCLIがインストールされている

・ローカルでSupabaseが起動している

もし設定できていない場合はこちらで解説していますので参考にしてください。

テーブルを作成する

migration newでテーブルを作成できます。

今回はお店のテーブルt_shopsを作成したいと思います。

bunx supabase migration new create_shops_table

実行するとsupabase/migrationsに新しいマイグレーションファイルが作成されていると思います。

そのファイルにテーブルを作成するSQLを書いていきます。

create table public.shops (
    uuid uuid not null primary key default uuid_generate_v4(),
    name text not null default ''::text,
    address text not null default ''::text,
    created_at timestamp with time zone not null default now(),
    updated_at timestamp with time zone not null default now()
)

保存したらマイグレーションを実行します。

bunx supabase db reset

ローカルのSupabaseを確認するとテーブルが追加されているのが確認できます。

db resetは一度データベースをリセットして再構築するのでデータなどはすべて消えてしまいます。

新しいマイグレーションのみを実行したい場合はmigration upを使用してください。

bunx supabase migration up

リモートのSupabaseにマイグレーションを反映する

ローカル環境でマイグレーションが実行できたので、リモートに反映してみます。

最初にリモートと紐づけできているか確認します。

bunx supabase projects list

表示されたプロジェクトのLINKEDにチェックが入っていればOKです。

次にマイグレーションの反映状況を確認します。

bunx supabase migration list

今回は1から新しく作成したので今回作成したひとつのみが表示されると思います。

Remote部分にチェックが入っていないので、こちらはまだリモートに反映されていないということです。

Connecting to remote database...
   Local          | Remote | Time (UTC)
  ----------------|--------|---------------------
   20250718005625 |        | 2025-07-18 00:56:25

リモートのSupabaseにアクセスするとテーブルが追加されているのが確認できると思います。

まとめ

いままでリモートのSupabaseを直接変更していましたが、ローカルにSupabaseを構築することで管理が簡単になりました。

自分の環境のみで完結するので開発段階で他のメンバーの邪魔にもなりません。

ゴリゴリ使っていこうと思いました!

最後に

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

ホームページを見てみる