狐好きぷろぐらまー (original) (raw)

こんにちは。 pregum_foxです。 また技術書典などのイベントが近づいているので、目当ての本を探しつつ最近の楽しみにしています。

今回はSupabase CLIを使って、ローカル環境をリモートからpullしようとsupabase db pull コマンドを叩いた時にエラーが出た時の対処法について記載していきます。

問題概要

開発で使用しているローカル環境のSupabaseプロジェクトのDBを変更した後、リモート環境で別の変更を加えた後にsupabase db pullを叩いた時にエラーが出ました。

エラー画面

原因

ローカル環境とリモート環境のマイグレーションの同期が取れていないことが原因でした。

対応内容

上記の問題を解消するために対応内容について記載します。

前提条件

まずは前提として以下の項目を満たしていることを確認します。

エラー内容と対処法

  1. マイグレーションの状態確認
    supabase migration listコマンドでマイグレーションファイルの状態を確認しました。

片方のみに反映されているマイグレーションファイルは見当たらなかったので、もう少し調べました。

その結果、リモート側の変更がローカルにすでにその変更が含まれているためにエラーが出ていることがわかりました。(スクショ時にはすでにマイグレーションファイルを削除した後だったので、後付けしております)

  1. ローカル側の変更を削除
    ローカルとリモートの差異を解消するため、ローカル環境にある不要なマイグレーションファイルを削除しました。
    例として、20240917140424_~マイグレーションファイルを削除しました。

マイグレーションファイルを削除

この時点でsupabase migration list を叩くと以下のようにローカル環境の欄が空になっていることが確認できます。

  1. リモートを適用前にマーク
    削除後、supabase migration repair --status reverted <マイグレーション日付>コマンドを使って、リモートの最新マイグレーションを適用前にマークしました。

ここでは、supabase migration repiar --status reverted 20240917140424 というコマンドを叩きました。

このコマンドにより、supabase migration listの結果からも該当マイグレーションが消えることが確認できました。

  1. リモートデータを再取得
    上記の設定後にsupabase db pullを再実行し、リモートデータの取得が正常に完了しました。

この際、「remote_schema」マイグレーションファイルを保存するかどうか尋ねられるため、保存する選択を行いました。

上記で保存しなくともリモート環境には保存されている為、特別な理由がない限りは保存する選択をおすすめします。

リモート環境のマイグレーション履歴はSupabaseのDatabase > PLATFORM > Migrations から確認できます。

リモート環境のマイグレーション履歴の参照場所

上記で無事リモート環境とローカル環境のマイグレーションが同期され、supabase db pullが動作するようになりました。 お疲れ様でした。

雑感

開発時はGUIでぽちぽちできるのですごい楽なのですが、いざローカル環境を整えて開発しようとするとよくDB関連の問題に遭遇し、その度に時間を浪費することがあったので、頻発するdb pullについてのエラー対処法を備忘録として残しました。 他にもマイグレーション方法などローカル環境で作成したfunctionをリモート環境へpushする方法など記事をそのうちまとめたいなと考えています。 ここまで読んでいただきありがとうございました。

参考サイト

https://supabase.com/docs/reference/cli/supabase-migration-repair

こんにちは。pregum_foxです。

今回は、初めて自作キーボードを購入しましたので、組み立てる際に知っておきたかったこと、組み立てた後に知っておくと良いメモを書いていきます。

読むとわかること

想定読者

以下目次です。

続きを読む

こんにちは。pregum_foxです。

今回はdriftの使い方についていくつか自分が調べて情報がなかった箇所についてtipsとして書いていこうと思います。

以下目次です。

続きを読む

こんばんは。pregum_foxです。

今回は、Supabaseにも正式に匿名サインイン(Anonymous Sign-ins) が実装されたのとのことなので、手元のリポジトリで試してみました。

前回はSocial Login(Facebook)のサンプルを作成しました。

【Supabase】Flutter + Supabase Authentication で Social Login(Facebook) のサインアップ・サインイン処理のサンプルを作った - 狐好きぷろぐらまー

他のSupabase Authenticationのサンプルを見たい場合は下記記事から確認可能です。

pregum-fox.hatenablog.jp

それでは目次です。

続きを読む

こんばんは。 pregum_foxです。

今回は個人開発毎回ビルドを手元で行うと、時間が溶けてしまうのでcodemagicを利用して

GitHubのレポジトリのdevelopブランチにPRがマージされたタイミングでビルドからFirebase App Distributeで配布を行う処理を自動化する手順を備忘録として残しておきます。

以下目次です。

この記事を読んでわかること

codemagicを用いてFlutterの開発環境のビルド〜Firebase App Distributionの配布までの設定方法

事前に準備が必要なもの

必須

iOSでのビルドする場合

Androidでビルドする場合

Firebase App Distributionで配布する場合

続きを読む

こんにちは。pregum_foxです。

最近模様替えを行いモニタの配置が変わって姿勢がよくなりましたが、机の高さを変えられる昇降デスクが欲しくなった今日この頃です。

概要

今回は、supabaseのsignUpメソッドにてデフォルトの挙動ではすでに存在するEmailを渡しても例外を投げないので、ないなら自分で作ってしまおうということで事前に存在チェックをするPostgres functionを定義して、Flutterから呼び出す処理がうまく動作したので記事にしました。

注意点

Issueにはセキュリティの問題からサニタイズされたユーザーデータ(つまりダミーのユーザーデータ)を返すようなので、戻り値で判定できないようになっているので、セキュリティホールにならないように実装が必要です。

以下目次です。

続きを読む

こんにちは。pregum_foxです。

最近使う電子マネーSuicaからQUICPayに変えてみたのですが、通知のタイトルを初めてみたときシンプルすぎて少し笑ってしました。

支払い自体はスムーズでチャージもしなくてよいので、今後も使っていこうと思ってます。

概要

さて今回は、最近開発で使っているツールをまとめてみようと思います。

いわゆる「ぼくのかんがえたさいきょうのつーる」のつもりで書いていますので

などがあれば、コメントもらえると嬉しいです😉

注意点

この記事の対象OSはmacOS です。

ですのでWindows ならこれがあるやLinux では〜〜 などは聞き流してしまうのでご注意ください。

また、対象はモバイルアプリ・Webアプリの方をターゲット層のつもりで書いています。

インフラ系の方にはお口に合わない可能性があります。

その場合でも色々ご意見いただけますと幸いです 🙏

以下目次です。

バックグラウンド

普段どのような開発をしているか説明します。

普段はモバイルアプリの開発をやりつつ、React.jsやCloud Function for FirebaseなどのNode.js + TypeScriptのコードも書いていたりしています。

ですので、バックエンドは知ってるぐらいで詳しくないです。

趣味では、FlutterやBaaSの勉強をしつつ個人開発を細々とやっています。

そんな人間がよく使うツール一覧をまとめましたので、その認識で読んでいただけると幸いです。

続きを読む