Supabase 400

Supabase の 400 エラー:原因と解決策

エラーの概要 Supabase の 400 エラーは、API へのリクエストの形式または内容に誤りがあることを示します。PostgREST クエリのフィルタ構文の誤り、必須ヘッダーの不足、認証 API パラメータの型ミスなど、クライアント側の問題が主な原因です。このエラーが返された場合、リクエスト自体を修正する必要があり、サーバーの状態ではなく送信側の実装を見直すべき合図です。 実際のエラーメッセージ例 Supabase JavaScript クライアントでの例: { "error": "400 Bad Request", "message": "Invalid filter: Column 'user_id' must use one of the following operators: eq, neq, gt, gte, lt, lte, like, ilike, is, in, cs, cd, sl, sr, nxl, nxr, adj, not, or, and", "status": 400 } cURL での直接リクエスト例: curl -X GET "https://<your-project>.supabase.co/rest/v1/users?status=eq.active&age=gt.25" \ -H "apikey: <your-api-key>" \ -H "Content-Type: application/json" 上記のように正しいフィルタ構文を使用しない場合、400 が返ります。 よくある原因と解決手順 原因 1:PostgREST フィルタ構文の誤り Supabase は PostgreSQL の高度なフィルタリング機能を提供していますが、正しい演算子と記号を使わなければ 400 エラーが返ります。> や < などの SQL 記号をそのままクエリに含めると、URL エンコーディングの問題やパーサーエラーが発生します。 ...

{
  "error": "400 Bad Request",
  "message": "Invalid filter: Column 'user_id' must use one of the following operators: eq, neq, gt, gte, lt, lte, like, ilike, is, in, cs, cd, sl, sr, nxl, nxr, adj, not, or, and",
2026年6月3日 · ErrorLog
Supabase 401

Supabase の 401 エラー:原因と解決策

Supabase の 401 エラー解説 エラーの概要 Supabase の 401 エラーは、API リクエストに含まれる認証トークンが無効であるか、有効期限が切れていることを示します。Supabase ではすべてのデータベースアクセスと認証が必要な API 呼び出しに JWT トークンを使用します。クライアント側で認証情報が正しく設定されていない、または有効期限切れのトークンでリクエストを送信した場合に発生します。 実際のエラーメッセージ例 JavaScript/TypeScript クライアントでの出力: { "error": "Unauthorized", "message": "Invalid or expired JWT", "status": 401 } REST API 経由でのエラーレスポンス: { "code": "PGRST301", "message": "Unauthorized", "details": null, "hint": null } よくある原因と解決手順 原因 1:anon キーまたは service role キーが間違っている Supabase プロジェクトには複数の認証キーが存在します。anonymous キー(anon key)はクライアント側で使用するもので、service role キーはバックエンド限定です。キーの値が誤っていたり、異なるプロジェクトのキーを混在させると 401 エラーが発生します。 Before(エラーが起きるコード): import { createClient } from '@supabase/supabase-js'; // キーが間違っているか、タイプミスがある const supabase = createClient( 'https://your-project.supabase.co', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImsxYWd0bWRidXFlYWpjYXh1d2ZvIiwicm9sZSI6ImFub24iLCJpYXQiOjE2MDMzMzIwMDAsImV4cCI6MjAzMzMzMjAwMH0.wrong_key_here' ); // この呼び出しで 401 エラーが返される const { data, error } = await supabase .from('users') .select('*'); After(修正後): ...

{
  "error": "Unauthorized",
  "message": "Invalid or expired JWT",
2026年6月3日 · ErrorLog