数据库
在创建、部署或运维 Prisma Compute…
当用户提到 Prisma Compute、prisma.compute.ts、@prisma/cli app deploy、compute:deploy、create-prisma --deploy、PRISMA_SERVICE_TOKEN 或需要部署/托管 Hono、Elysia、Next.js 等框架应用时,按本经验操作。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
在创建、部署或运维 Prisma Com特定
解决思路
- 先用 Prisma Platform CLI 处理 Compute 应用工作流:运行 `bunx @prisma/cli@latest app deploy --help`、`bunx @prisma/cli@latest app --help`、`bunx @prisma/cli@latest build logs --help`、`bunx create-prisma@latest --help` 确认命令用法。
- 部署 Compute 应用使用 `@prisma/cli@latest`;新项目脚手架使用 `create-prisma@latest`。
- 当命令崩溃(`UNEXPECTED_ERROR`)、排障后仍失败或用户要求反馈给 Prisma 团队时,运行 `bunx @prisma/cli@latest feedback "app deploy crashed: <first error line>"` 或 `bunx @prisma/cli@latest feedback "love the deploy flow" --email you@example.com`。
- 反馈时按崩溃输出提示操作:`--json` 崩溃信封的 `nextActions` 中 `recover` 条目带有预填命令,原样运行;人类可读崩溃输出以 `Tell us what happened:` 结尾。
- 反馈默认匿名;只有传 `--email` 才附带邮箱,且只附带 CLI 版本、node 版本、OS 平台/架构;绝不在消息中包含 secrets、连接 URL 或用户数据。
- 按以下证据顺序决定修改或运行什么:1)项目生成的脚本和配置,尤其是 `prisma.compute.ts`、`compute:deploy`、框架配置和 `package.json`;2)`create-prisma` 与 `@prisma/cli` 的 CLI help 输出;3)本地已安装包代码、生成产物和类型定义;4)官方文档。
- 按决策树读取对应参考资料:现有项目部署或重新部署读 `references/app-deploy-cli.md`;类型化 Compute 配置、monorepo、部署 target、app root 或 build/env 默认值读 `references/compute-config.md`;框架特定 build/runtime 工作读 `references/frameworks.md`;从脚手架新建项目读 `references/create-prisma.md`;程序化部署、SDK、API 或底层 App/Deployment 概念读 `references/sdk-api.md`;build、auth、env、deploy 或 runtime 失败读 `references/troubleshooting.md`。
- 命令验证:在操作过程中使用 CLI help 输出确认命令语法(`verify-help-first`)。
- 命令验证:不要假设 ORM CLI 中有 `prisma app deploy`;检查任务应使用 `@prisma/cli`(`verify-prisma-vs-platform-cli`)。
- 命令验证:项目已有生成的 `compute:deploy` 脚本时优先使用它(`verify-generated-scripts`)。
- 命令验证:真实部署后应请求公开部署 URL,不要只相信本地或 readiness-only 检查(`verify-public-url`)。
- 命令验证:把 `prisma.compute.ts` 视为类型化 Compute 配置;编辑或部署前先检查项目配置和生成脚本(`verify-config-support`)。
- 命令验证:本地工作区 list/use/logout 流程使用 `@prisma/cli auth workspace` 命令(`verify-auth-workspace-support`)。
- 认证与工作区:非空 `PRISMA_SERVICE_TOKEN` 是命令的活动认证源,本地 OAuth 工作区在执行时被忽略;若已设置但为空,CLI 应失败而不是回退到已存 OAuth(`auth-source-precedence`)。
- 认证与工作区:`auth login` 可在同一台机器存储多个工作区的 OAuth 会话;活动工作区指针决定普通命令使用哪个已存 OAuth 授权(`auth-multi-workspace`)。
- 认证与工作区:用 `auth workspace list --json` 检查本地会话;Agent 应优先使用 JSON 中的 workspace id 而不是 name,因为 name 可能歧义(`auth-list-before-switch`)。
- 认证与工作区:非交互切换用 `auth workspace use <id-or-name>`;只有交互式选择器或本地恰好一个 OAuth 工作区时,才用不带参数的 `auth workspace use`(`auth-switch-explicitly`)。
- 认证与工作区:若活动 OAuth 工作区已登出或刷新失败,CLI 不应静默回退到另一个缓存工作区;运行 `auth workspace use <id>` 选择下一个工作区(`auth-no-fallthrough`)。
- 认证与工作区:用 `auth workspace logout <id-or-name>` 或 `auth logout --workspace <id-or-name>` 移除单个本地 OAuth 工作区会话;裸 `auth logout` 清除所有本地 OAuth 工作区会话(`auth-single-workspace-logout`)。
- 认证与工作区:设置 `PRISMA_SERVICE_TOKEN` 时 `auth workspace use` 不可用,因为 service token 是活动认证源;要切换本地 OAuth 工作区需 unset 该 env var;工作区 logout 仍只清理本地 OAuth 状态(`auth-service-token-switching`)。
- 认证与工作区:本地 OAuth 凭据位于 platform auth 文件,工作区元数据在 sidecar context 文件;项目 pin 位于 `.prisma/local.json`,当存在 `prisma.compute.ts` 时 CLI app/project 状态位于其附近的 `.prisma/cli/state.json`(`auth-storage-awareness`)。
- 框架就绪:根据 `@prisma/cli app deploy` 评估部署就绪,而不是根据 `create-prisma` 能脚手架出什么(`framework-cli-first`)。
- 框架就绪:Compute 部署支持 `nextjs`、`nuxt`、`astro`、`hono`、`nestjs`、`tanstack-start`、`custom` 和 `bun`(`framework-supported-cli-deploy`)。
- 框架就绪:`create-prisma` 可提供生成默认值和 `compute:deploy`,但它不是已有应用的通用部署入口(`framework-create-prisma-defaults-only`)。
- 框架就绪:Compute 需要 server entrypoint 或框架 artifact,不能只有静态输出(`framework-build-output`)。
- 运行时 host 与端口:部署的 server 必须绑定所有接口(`0.0.0.0` 或框架等价物),不能硬编码 `localhost` 或 `127.0.0.1`(`runtime-bind-all-interfaces`)。
- 运行时 host 与端口:应用必须监听部署的 HTTP 端口:尽量读取 `process.env.PORT`,或传入匹配的 `--http-port`(`runtime-match-http-port`)。
- 运行时 host 与端口:Compute readiness 监视监听端口;仅 loopback 的监听器可能看起来就绪,但公开 ingress 无法访问(`runtime-readiness-port-only`)。
- 运行时 host 与端口:ingress 给应用 60 秒开始响应,之后返回 `504 Gateway Time-out` 并取消请求;设计 handler 先响应,长任务放到 `waitUntil` 或队列,绝不要放在请求内(`runtime-respond-within-60s`)。
- 类型化 Compute 配置:普通单应用不强制需要 `prisma.compute.ts`;没有持久配置时使用 flags(`config-optional-simple-app`)。
- 类型化 Compute 配置:用 `bunx @prisma/cli@latest init` 生成新配置:它检测框架,固定 name/framework/httpPort(Bun/Hono 还固定 entry),并提供 Project link;`--format json` 改为写出无依赖的 `prisma.compute.json`;`init` 在已有任何配置时拒绝,从不脚手架代码,也从不部署(`config-init-formalizer`)。
- 类型化 Compute 配置:把可复用部署默认值放在 `prisma.compute.ts` 中用 `defineComputeConfig`,不要放在 `prisma.config.ts`(`config-use-prisma-compute-ts`)。
- 类型化 Compute 配置:单部署目标用 `app`,monorepo 或多应用仓库用 `apps`;只能定义其中一个(`config-app-vs-apps`)。
- 类型化 Compute 配置:monorepo 中用 `prisma.compute.ts` 声明 app targets、roots、框架默认值、entrypoints、ports 和 env inputs(`config-monorepo-roots`)。
- 类型化 Compute 配置:多应用配置中,`@prisma/cli app deploy web` 选择 `apps.web` target;没有 `[app]` 时命令可从当前目录推断 target;否则 deploy 可运行所有 targets,而 build/run 要求指定一个(`config-targets`)。
- 类型化 Compute 配置:配置中的 `region` 仅是新创建 app 的默认值;部署到已有 app 会保留该 app 当前 region(`config-region-new-app-only`)。
- 类型化 Compute 配置:预构建或自定义构建 artifact 使用 `framework: "custom"` 加 `build.outputDirectory` 和 `build.entrypoint`(`config-custom-artifact`)。
- 类型化 Compute 配置:不要在 `prisma.compute.ts` 中提交 Workspace、Project、Branch、production intent、service tokens 或 secret 值;这些放在 flags、`.prisma/local.json`、env storage 或 CI secrets。App 级默认值如 `region`、`root`、`framework`、`entry`、`httpPort` 和非 secret env 文件路径可放配置(`config-no-project-branch-secrets`)。
- 类型化 Compute 配置:显式部署 flags 如 `--framework`、`--entry`、`--http-port`、`--region`、`--env` 会覆盖匹配的配置值(`config-flags-win`)。
- 分支、环境与数据库:绝不打印完整 `DATABASE_URL`、service tokens 或 secret 值(`env-do-not-leak-secrets`)。
- 分支、环境与数据库:生成的部署脚本可能通过 `prisma.compute.ts` 或 `--env .env` 加载 env;重新部署前检查实际脚本/配置(`env-deploy-loads-dotenv`)。
- 分支、环境与数据库:重新部署脚本不运行迁移或 seed 数据;单独运行相应的 Prisma 数据库脚本(`env-migrations-separate`)。
- 分支、环境与数据库:`@prisma/cli` 使用 `PRISMA_SERVICE_TOKEN` 做 service-token 认证(`env-cli-token-name`)。
- 分支、环境与数据库:分支部署、分支 env vars 和分支数据库必须使用同一分支名;指向 preview branch 时显式传 `--branch <git-name>`(`env-branch-scope`)。
- 分支、环境与数据库:生产 env 用 `--role production`,preview 模板 env 用 `--role preview`,分支特定覆盖用 `--branch <git-name>`(`env-production-vs-preview`)。
- 分支、环境与数据库:通过 database 和 project env 命令显式保持数据库与 env 接线;部署示例不应加入数据库设置,部署也不会运行迁移、seed 数据或自动为每个 app 创建一个数据库(`env-db-explicit`)。
- 部署操作:仅在用户意图生产部署时使用 `--prod --yes`;App 首次生产部署会自动 promote,不需要 `--prod`;该 flag 控制后续生产分支部署(`deploy-prod-intent`)。
- 部署操作:使用 `app deploy --no-promote` 做 build-then-verify:它构建一个可在自身 URL 访问的 candidate,不触碰 live deployment,之后用 `app promote <deployment-id>` promote(`deploy-no-promote`)。
- 部署操作:当 Compute app 连接到 GitHub push-to-deploy 时,合并到默认分支就是生产部署路径;检查 deployment records 或 GitHub check runs,而不是告诉用户重新部署已合并的 PR 分支或运行默认分支 preview deploy(`deploy-github-default-branch`)。
- 部署操作:用 `@prisma/cli build logs <build-id>` 查看 GitHub/Console build 输出;用 `app logs` 查看运行时 deployment 日志;两者 id 不同(`deploy-build-logs`)。
- 部署操作:非交互部署需要正确的活动已存 OAuth 工作区或受支持的 service token env var;绝不打印 token(`deploy-noninteractive-auth`)。
- 部署操作:脚本和 Agent 可读输出使用 `--json --no-interactive`(`deploy-json-for-agents`)。
- 部署操作:仅在用户希望 deploy 创建并链接新 project 时使用 `--create-project <name>`;它与 `--project` 和 `PRISMA_PROJECT_ID` 冲突(`deploy-create-project`)。
- 部署操作:App show/open/logs/list-deploys/promote/rollback/remove 和 domain 命令也可接受来自 `prisma.compute.ts` 的 `[app]` targets(`deploy-ops-targets`)。
- 部署操作:遇到 `UNEXPECTED_ERROR` 或无法解决的失败时,用 feedback 命令上报;见上面的反馈命令(`deploy-report-cli-bugs`)。
- SDK 与 API:app 工作流优先用 `@prisma/cli app deploy`;除非用户构建底层自动化,否则只用 `create-prisma` 脚手架新 app(`sdk-use-cli-first`)。
- SDK 与 API:`@prisma/compute-sdk` 返回 `Result` 值;检查 `isOk()`/`isErr()`,不要依赖异常(`sdk-result-handling`)。
- SDK 与 API:对未检出到磁盘的 repository snapshots 使用 `detectComputeApp`;自行枚举 workspaces,并对每个候选 app root 调用一次(`sdk-snapshot-detection`)。
- 按首选工作流执行:1)检查项目:包管理器、template/framework、`package.json` scripts、Prisma 版本、Prisma client 位置、`prisma.compute.ts` 和已有 `compute:deploy`。
- 2)对实际使用的 package 验证 CLI help 输出。
- 3)在 project/app 变更前验证认证上下文:`auth whoami --json`,可能有多本地会话时 `auth workspace list --json`。
- 4)选择路径:已有 app 部署走配置支持的 target(若存在)、生成的 `compute:deploy`,或 `@prisma/cli app build/run/deploy` flags;新 app 脚手架走 `create-prisma`,然后生成的 `compute:deploy` 或 `@prisma/cli app deploy`;底层自动化走 `@prisma/compute-sdk` 或 Management API。
- 5)检查框架就绪以及 host/port/env/runtime 要求,包括 project 和 branch scope。
- 6)可行时,部署前运行本地 build 或 `app build`。
- 7)自动化时用 JSON 输出部署,然后请求公开 URL,并总结 app URL、app id、deployment id、project id、workspace id 和后续步骤。
- 8)对 GitHub/Console builds,在猜测 build 失败原因前,检查 `Prisma Compute Deploy` check run 或 `build logs <build-id>`。
适用边界 · 注意事项
- 不要在不涉及 Prisma Compute 或 @prisma/cli 部署的普通 Prisma ORM 场景中套用本经验。
- 不要把 Compute 部署指导埋在通用 `prisma-cli` skill 中;不要在已有应用内仅为部署而运行 `create-prisma`(应使用生成的 `compute:deploy` 或 `@prisma/cli app deploy`),也不要告诉用户每个 `create-prisma` 模板都能自动部署。
- 不要用占位 `DATABASE_URL` 部署;不要假设 `next start` 是 Compute 运行时路径,Next.js 部署需要 standalone output。