joyrank

joyrank · 还没接上数据库

还差四步就能跑起来

代码没问题,只是 DATABASE_URL 还没设置。

  1. 1

    开一个 Postgres

    Neon 或 Supabase 都行,代码是直连标准 Postgres,不依赖任何厂商 SDK。关键是必须用连接池(pooler)那个串,不能用 Direct。
    • neon.tech → 复制 Pooled connection(域名带 -pooler
    • supabase.com → Connect 面板选 Transaction pooler(端口 6543)。 Direct 是 IPv6-only,Vercel 连不上
  2. 2

    建 .env.local

    在项目根目录(和 package.json 同级):
    cp .env.example .env.local
    至少填这两行,连接串二选一:
    # Neon
    DATABASE_URL="postgres://用户:密码@ep-xxx-pooler.区域.aws.neon.tech/neondb?sslmode=require"
    
    # 或 Supabase(注意端口 6543)
    DATABASE_URL="postgres://postgres.项目ref:密码@aws-0-区域.pooler.supabase.com:6543/postgres"
    
    NEXT_PUBLIC_SITE_URL="http://localhost:3000"
  3. 3

    建表并灌种子

    npm run db:migrate
    npm run db:seed
    用 Supabase 的话,建表这一次临时换成 Session pooler(端口 5432)更稳 ——schema.sql 里有 CREATE FUNCTIONCREATE TRIGGER, 走 6543 的事务模式偶尔会有兼容问题。跑完再换回 6543。
    灌种子这步别跳过 —— 空榜是所有竞价站的头号死因。先改scripts/seed-data.json,换成你真实的 20–30 条。
  4. 4

    重启 dev

    npm run dev
    必须重启,Next.js 只在启动时读 .env.local

完整部署说明和冷启动 SOP 在项目根目录的 README.md。 自测跑 npm test(44 项纯逻辑测试,不需要数据库)。