💡

Supabaseのupsertでnot-nullエラー

2025/02/24に公開

背景

個人でちょっとしたWebアプリを開発していた際に初めて利用したsupabaseで出会ったエラーに時間を費やしたので共有します。

設定内容

このテーブルのusernameにnot-null制約の設定をしていました。

実装内容

実装内容は次の通りです。

const { error: updateError } = await supabase
        .from('profiles')
        .upsert({
          id: session.user.id,
          avatar_url: publicUrl,
          updated_at: new Date().toISOString(),
        });

エラー

既に存在するレコードに対してupsertした際に、既に値が入っているカラムに対してnot-null エラーが発生する事象に遭遇しました。

 null value in column \"username\" of relation \"profiles\" violates not-null constraint

解決策

対象のカラムのデフォルト値を空の文字列にすることで解決しました。
※下記画像のset as empty string を選択する

補足

当事象はGithubでissuesとして報告されていましたので、いつかは解決される問題なのかもしれません。
https://github.com/supabase/postgrest-js/issues/515

さいごに

最後まで閲覧いただきありがとうございます。

Discussion