ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Prisma CLI 数据重置命令详解:使用 `prisma reset` 清空服务数据

Prisma CLI 数据重置命令详解:使用 `prisma reset` 清空服务数据 后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载prisma reset是 Prisma CLI 中用于重置当前 stage/cluster 上服务数据的核心命令适用于开发环境数据清理、测试数据重建以及配合prisma import/prisma export完成数据迁移等场景。本文以 docs/1.2/04-Reference/07-CLI-Command-Reference/02-Data-Workflows/04-prisma-reset.md 为主体结合 reset 命令源码 与底层 Client.reset 实现带你完整掌握该命令的用法、Flags、交互确认机制与底层工作原理。命令概述prisma reset用于重置清空当前 stage/cluster上的服务数据。这里的当前由项目根目录下的服务定义文件prisma.yml决定——CLI 会读取该文件中的service、stage、cluster等配置确定要操作的具体服务实例。从源码看该命令在 reset.ts 中被定义为static topic reset static description Reset the stage data static group general即其命令主题为reset描述为重置 stage 数据归属于general命令组。典型使用场景开发环境数据重建每次开发迭代前清空数据库重新导入种子数据测试数据隔离在 CI 或本地测试中先重置再灌入确定的测试数据集保证测试可重复配合数据迁移工作流先用prisma export备份数据prisma reset清空目标环境再通过prisma import恢复实现环境间数据搬运。⚠️ 注意prisma reset会永久删除当前服务实例中的数据操作不可逆。执行前请务必确认目标 stage/cluster必要时先用 prisma export 做好数据备份。用法与 Flags基本用法prisma reset [flags]Flags 一览原文档给出的两个核心 Flags-e, --env-file ENV-FILE Path to .env file to inject env vars -f, --force Force reset data without confirmationFlag短形式类型说明默认行为--env-file-estring.env文件路径用于注入环境变量不指定时按默认规则查找.env--force-fboolean跳过确认提示直接强制执行重置不加则弹出交互式确认此外从 reset.ts 的 Flags 定义中还可以看到一个在官方文档中未列出的隐藏 Flag-p, --project PATH Path to Prisma definition file--project用于显式指定 Prisma 服务定义文件prisma.yml的路径方便在非标准目录结构或需要针对不同定义文件执行操作时使用。--env-file的作用prisma.yml中经常通过${env:XXX}语法引用环境变量例如service: example stage: ${env:PRISMA_STAGE} cluster: ${env:PRISMA_CLUSTER} secret: ${env:PRISMA_SECRET} datamodel: database/datamodel.graphql此时--env-file指定的文件会先被加载、注入环境变量再加载prisma.yml对应源码中的this.definition.load(this.flags, envFile)。根据 Using Variables 文档CLI 加载环境变量的顺序为本地环境 →--env-file指定的文件 → 默认的.env文件。关于prisma.yml的完整结构可参考 prisma.yml 概览与示例。实战示例带确认提示的重置prisma reset执行后会先根据prisma.yml定位当前服务与 stage然后弹出交互式确认。确认提示的文案在源码中定义为见 reset.tsAre you sure that you want to reset the data of serviceName in stage stage? y/N默认值为n即默认拒绝。输入y不区分大小写、以y开头即可才会继续执行重置输入n或其他以n开头的回答命令会直接以退出码 0 结束不做任何操作。这一默认安全策略避免了误触导致的不可逆数据丢失。跳过确认强制重置prisma reset --force或使用短形式prisma reset -f该命令适用于脚本化、CI 等无人工干预的场景。由于跳过了确认环节务必确认目标 stage/cluster 正确后再执行。源码级工作原理理解prisma reset的完整调用链有助于你判断它在各种环境下的行为。命令执行流程reset.tsrun()方法的执行顺序如下对应 reset.ts读取--force与--env-file两个 Flag调用this.definition.load(this.flags, envFile)加载服务定义prisma.yml并解析出serviceName与stage通过this.definition.getCluster()获取当前 cluster并将其设为活动 cluster若未加--force调用askForConfirmation(serviceName, stage)进行交互确认调用this.reset(serviceName, stage)真正执行重置。执行重置时命令会向用户展示进度提示Resetting serviceNamestageName并在结束后输出耗时单位毫秒对应源码this.out.action.start(Resetting ${chalk.bold(${serviceName}${stageName})}) await this.client.reset(...) this.out.action.stop(chalk.cyan(${Date.now() - before}ms))底层 API 调用Client.ts重置动作最终由 CLI 引擎的 HTTP 客户端完成。在 Client.ts 中reset方法向Prisma API 的/private端点发送一次POST请求请求体是一个 GraphQL mutationmutation { resetData }关键实现细节请求地址this.env.activeCluster.getApiEndpoint(serviceName, stage, workspaceSlug) /private即当前活动 cluster 的 API 端点拼接/private路径鉴权请求头携带Authorization: Bearer tokentoken 来自this.definition.getToken(serviceName, stageName)若服务属于某个 workspace还会传入getWorkspace()的值用于定位端点代理支持请求通过getProxyAgent(endpoint)挂载代理在企业网络环境下同样可用。这一设计说明prisma reset并非直接操作本地数据库而是向运行中的 Prisma 服务发送 GraphQL mutation由服务端完成数据清空因此目标 cluster 必须处于可访问状态。相关命令与数据工作流prisma reset属于 CLI 命令参考中的Data Workflows数据工作流分组与它同组的是 prisma import、prisma export 和 prisma playground完整列表见 CLI 命令参考索引。在实际开发中prisma reset常与以下命令组合使用场景命令组合说明备份后清空prisma export→prisma reset先导出数据到 zip再清空服务数据重置后恢复prisma reset→prisma import清空后将备份数据导入常用于环境间迁移重置后播种prisma reset→prisma deploy --seed或prisma seed清空后重新部署并执行种子数据脚本值得留意的是从 seed 命令源码 可以看到prisma seed自身也接收一个reset布尔标志const { reset } this.flags并在执行播种时把 stage 与 reset 标志一并传递可以推断出先重置、再播种的原子化操作在该版本中同样被支持适用于一键重建带种子数据的环境。注意事项与最佳实践数据不可逆重置即永久删除无法通过命令撤销重要数据务必先prisma export备份确认目标环境--force会跳过一切确认脚本中执行时建议通过环境变量区分 stage如stage: ${env:PRISMA_STAGE}避免误操作生产环境鉴权要求重置请求需要携带有效的服务 token确保prisma.yml中的secret配置与 cluster 端一致cluster 可达性命令通过 HTTP 调用目标 cluster 的/private端点需保证网络连通与代理配置正确优先交互模式本地手动操作时建议不加--force利用默认y/N默认拒绝的安全机制作为最后一道防线。赞分享后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载相关推荐Prisma CLI 命令详解使用 prisma reset 重置服务数据Data Workflows 系列Prisma CLI 命令详解使用 prisma reset 重置服务数据Data Workflows 系列 导读 prisma reset 是 Pris后端数据库GraphQLAuthelia crypto hash generate pbkdf2 命令全解析生成 PBKDF2 密码哈希摘要Authelia crypto hash generate pbkdf2 命令全解析生成 PBKDF2 密码哈希摘要 本篇技术指南围绕 Authelia 的后端数据库GraphQLPrisma CLI 数据重置指南深入解析 prisma reset 命令Prisma CLI 数据重置指南深入解析 prisma reset 命令 prisma reset 是 Prisma CLI 中用于清空当前 stage/c后端数据库GraphQL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表