For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh-tw/docs/modules/database.md (or send Accept: text/markdown).
資料庫模組
每條記錄流經的 Drizzle 模式與持久化助手。
安裝與配置
在執行任何步驟之前,請閱讀開始之前 和終端基礎知識。這些說明假設您在 VS Code 中開啟了完整的 supastack monorepo;它的根 package.json 標記儲存庫根。在 pnpm 命令中,工作區包是應用程式或共享程式碼資料夾;在產品中,工作空間是團隊的資料容器和安全邊界。 corepack pnpm --filter ... 從 monorepo 選擇一個包,同時從其根執行命令。如果您僅開啟同步的移動或桌面資料夾,則它不包含 Web 後端、Docker 設定或根指令碼:從此 monorepo 或可訪問的託管伺服器執行後端,並使用平臺資料夾自己的指令碼。環境變數是儲存在本地 .env 檔案或託管儀錶板中的命名設定;更改後重新啟動相關應用程式,並將伺服器機密保留在 NEXT_PUBLIC_ 和 EXPO_PUBLIC_ 值之外。
1.安裝並啟動Docker Desktop。
2. 將 .env.example 複製到遷移工具根目錄中的 .env,將 Next.js 複製到 apps/web/.env.local(PowerShell:Copy-Item .env.example .env;Copy-Item .env.example apps/web/.env.local. macOS/Linux/Git Bash:cp .env.example .env;cp .env.example apps/web/.env.local)。保持兩個檔案中的 DATABASE_URL 相同;該示例已與本地 Docker 資料庫匹配。
3. 從儲存庫根目錄執行 docker compose up -d postgres 和 docker compose ps;等到 postgres 報告健康。
4. 從根執行 corepack pnpm --filter @supastack/db db:migrate 以應用套件中已附帶的遷移。僅在編輯 packages/db/src/schema.ts 後,執行 db:generate,檢查生成的 SQL,然後執行 db:migrate。預期:本地 Postgres 容器執行正常,並且 Web 應用程式使用其遷移的資料庫。切勿將首次執行指向生產環境。
在服務端環境中為目標 Postgres 資料庫配置 DATABASE_URL。整合驗收使用獨立的一次性資料庫。絕不要把測試遷移指向生產資料庫。
資料庫 workspace 匯出模式定義與持久化助手。引入表或列之前,先閱讀 packages/db/src/schema.ts 與遷移目錄。
docker compose up -d postgres
docker compose ps
corepack pnpm --filter @supastack/db db:migrate
# Only after changing packages/db/src/schema.ts:
corepack pnpm --filter @supastack/db db:generate
corepack pnpm --filter @supastack/db db:migrate要複製的命令
按照註釋檢視命令在哪個資料夾中執行。如果標記了兩個終端,請開啟兩個終端視窗,並在使用第二個命令時保持第一個命令執行。
# Choose one copy method for your terminal:
# PowerShell:
Copy-Item .env.example .env
Copy-Item .env.example apps/web/.env.local
# macOS/Linux/Git Bash alternative:
# cp .env.example .env
# cp .env.example apps/web/.env.local
docker compose up -d postgres
docker compose ps
corepack pnpm --filter @supastack/db db:migrate實現流程
修改模式後生成遷移,檢查生成的 SQL,並與模式變更一起提交。新增必填列之前,先規劃既有記錄如何取值。
每條使用者記錄都帶 workspaceId,並把這個邊界帶進讀寫。AI 記賬使用不可變的模型-價格歷史,而不是重寫已被用量記錄引用的價格。
驗證與排障
如果 Docker 表示無法連線到其引擎,請啟動 Docker Desktop 並等待其完成載入。如果 postgres 執行狀況不佳,請從根目錄執行 docker compose log postgres 並在遷移之前修復該錯誤。如果Web顯示DATABASE_URL缺失,請檢查apps/web/.env.local;如果 db:migrate 無法連線,請檢查 root .env。如果更改資料庫,請更新這兩個檔案。重試之前讀取第一個失敗的遷移語句;切勿在生產中重複此操作。
在隔離資料庫上應用遷移並在其上執行資料庫門檻測試。缺少憑證應產生明確的跳過門檻,而不是“持久化已通過”的斷言。遷移失敗時,先看是哪條語句失敗以及當前模式,再重試。