0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Supabase]エラー:new row violates row-level security policy for table "study-record"

Posted at

背景

React + Supabaseで学習記録アプリを開発している時、アプリ上で入力したデータをSupabase上のテーブルに追加できないエラーに遭遇した。

エラー詳細

{code: '42501', details: null, hint: null, message: 'new row violates row-level security policy for table "study-record"'}

※ここで、「study-record」はSupabase上に作ったテーブル名

エラー原因

結論としては、Supabase上でテーブルに対するセキュリティポリシー(policy)を設定していなかったことが原因だった。

SupabaseはRow-Level Security (RLS) を使用して、データベースへのアクセス制御を強化しており、これにより、特定の条件を満たすユーザーのみがデータの挿入(INSERT)や更新(UPDATE)などの操作を行えるように制限されている。

解決方法

  1. 下記画像の「Create policy」をクリック
    スクリーンショット 2025-01-18 13.53.41.png

  2. 「Policy name」を設定し、「SELECT」操作を許可するポリシーを作成する場合、using句をtrueに設定します。これにより、すべてのレコードに対してSELECTが許可されます。
    スクリーンショット 2025-01-18 14.00.44.png

  3. 最後に、作成したポリシーを「Save policy」を押して有効にし、エラーがなくなる事を確認する。

注意点

  • using句をtrueに設定すると、全ての行に対して無条件で操作が許可されるが、特定のユーザーやデータに対してのみ許可を出すほうがセキュリティ上より安全。
    例えば、特定の条件(ユーザーIDや役職など)に基づいてアクセス制御を行う方法が一般的であるらしい。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?