データの読み書きが許可されていない(RLS)
new row violates row-level security policy for table "posts"
ひとことで言うと
「この表(テーブル)には、だれが読み書きしてよいかのルールがあり、今の操作はそのルールで止められました」という意味です。Supabase でよく出ます。
よくある原因
- RLS(行ごとの安全ルール)をオンにしたが、ルール(ポリシー)を作っていない
- ログインしていない状態で書き込もうとした
- ルールの条件が、実際のデータと合っていない
自分で確かめること
- Supabase の管理画面で、そのテーブルの「Policies」を見る
- ログインした状態で試しているか確かめる
たいていは、こうすると直ります
そのテーブルに、必要な操作(select・insert など)を許すポリシーを作ります。ルールを外して全部許すのは、安全のため避けます。
AIへの伝え方
下の文をコピーして、ChatGPT・Claude・Cursor などに貼り付けてください。トップで貼り付けたエラー文があれば、自動でそれに入れかわります。
次のエラーが出て困っています。プログラミング初心者にもわかるように、原因と直し方を教えてください。必要なら、直したコードも全部見せてください。 【エラー】 new row violates row-level security policy for table "posts" 【やったこと】 (ここに、エラーが出る前にしたことを書く。例:npm run dev を実行した) 【参考】 このエラーは「データの読み書きが許可されていない(RLS)」というもので、よくある原因は次のとおりです。 ・RLS(行ごとの安全ルール)をオンにしたが、ルール(ポリシー)を作っていない ・ログインしていない状態で書き込もうとした ・ルールの条件が、実際のデータと合っていない どれに当てはまるかを確かめる方法も教えてください。