공개 문서
docs/fix-subscriptions-table.md
아래는 docs/fix-subscriptions-table.md 와 동일한 원문입니다. Markdown과 HTML 변환 결과를 각각 복사할 수 있습니다.
공개 문서 원문 (Markdown)
# subscriptions 테이블 즉시 복구 가이드
로그인 후 대시보드에서 아래 오류가 보이면 이 문서대로 진행합니다.
- `Could not find the table 'public.subscriptions' in the schema cache`
---
## 1) Supabase SQL Editor에서 실행
프로젝트: `nuqjwsxdscxyhbrsmiqd`
아래 SQL을 그대로 실행하세요.
```sql
CREATE TABLE IF NOT EXISTS public.subscriptions (
user_id uuid PRIMARY KEY REFERENCES public.users (id) ON DELETE CASCADE,
polar_subscription_id text UNIQUE,
polar_customer_id text,
plan text NOT NULL DEFAULT 'free',
status text NOT NULL DEFAULT 'inactive',
current_period_end timestamptz,
metadata jsonb DEFAULT '{}'::jsonb,
created_at timestamptz DEFAULT now(),
updated_at timestamptz DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_subscriptions_polar_subscription
ON public.subscriptions (polar_subscription_id);
ALTER TABLE public.subscriptions ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS "Users can read own subscription" ON public.subscriptions;
CREATE POLICY "Users can read own subscription"
ON public.subscriptions
FOR SELECT
TO authenticated
USING (auth.uid() = user_id);
```
---
## 2) 실행 후 검증
1. 앱 새로고침 (`/dashboard`)
2. 구독 카드에서 에러 문구가 사라졌는지 확인
3. `plan/status`가 기본값(`free/none` 또는 `free/inactive`)으로 표시되는지 확인
---
## 3) 참고
- 원본 마이그레이션 파일: `supabase/migrations/005_subscriptions.sql`
- 앱은 현재 테이블 누락 시에도 `free/none`으로 폴백하도록 완화되어 있음
공개 문서 변환 코드 (HTML)
<h1>subscriptions 테이블 즉시 복구 가이드</h1>
<p>로그인 후 대시보드에서 아래 오류가 보이면 이 문서대로 진행합니다.</p>
<ul>
<li><code>Could not find the table 'public.subscriptions' in the schema cache</code></li>
</ul>
<hr>
<h2>1) Supabase SQL Editor에서 실행</h2>
<p>프로젝트: <code>nuqjwsxdscxyhbrsmiqd</code></p>
<p>아래 SQL을 그대로 실행하세요.</p>
<pre><code class="language-sql">CREATE TABLE IF NOT EXISTS public.subscriptions (
user_id uuid PRIMARY KEY REFERENCES public.users (id) ON DELETE CASCADE,
polar_subscription_id text UNIQUE,
polar_customer_id text,
plan text NOT NULL DEFAULT 'free',
status text NOT NULL DEFAULT 'inactive',
current_period_end timestamptz,
metadata jsonb DEFAULT '{}'::jsonb,
created_at timestamptz DEFAULT now(),
updated_at timestamptz DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_subscriptions_polar_subscription
ON public.subscriptions (polar_subscription_id);
ALTER TABLE public.subscriptions ENABLE ROW LEVEL SECURITY;
DROP POLICY IF EXISTS "Users can read own subscription" ON public.subscriptions;
CREATE POLICY "Users can read own subscription"
ON public.subscriptions
FOR SELECT
TO authenticated
USING (auth.uid() = user_id);
</code></pre>
<hr>
<h2>2) 실행 후 검증</h2>
<ol>
<li>앱 새로고침 (<code>/dashboard</code>)</li>
<li>구독 카드에서 에러 문구가 사라졌는지 확인</li>
<li><code>plan/status</code>가 기본값(<code>free/none</code> 또는 <code>free/inactive</code>)으로 표시되는지 확인</li>
</ol>
<hr>
<h2>3) 참고</h2>
<ul>
<li>원본 마이그레이션 파일: <code>supabase/migrations/005_subscriptions.sql</code></li>
<li>앱은 현재 테이블 누락 시에도 <code>free/none</code>으로 폴백하도록 완화되어 있음</li>
</ul>