首页/新闻资讯/正文详情

Prisma 1 数据种子指南:使用 `prisma seed` 为服务填充初始数据

发布时间:2026/9/24 11:13:55 来源:云帆数科 栏目:资讯中心
Prisma 1 数据种子指南:使用 `prisma seed` 为服务填充初始数据
后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载prisma seed是 Prisma 1 CLI 中用于用初始数据填充服务Seed the service with initial data的标准命令。本文以官方参考文档为基础结合本仓库 CLI 源码seed.ts 与 Seeder.ts与prisma.yml配置文档系统讲解prisma seed的完整用法、--reset等核心参数以及seed属性下import与run两种数据种子机制的工作原理。读完本文你将掌握如何为 Prisma 服务声明种子数据、手动触发种子并在部署时自动完成首次数据填充。命令总览prisma seed用于向已部署的 Prisma 服务填充数据。该命令依赖prisma.yml中定义的seed属性——如果prisma.yml中没有seed属性命令会直接报错退出源码见 seed.tsIn order to seed, you need to provide a seed property in your prisma.ymlUsageprisma seed [flags]Flags官方 1.13 参考文档列出的核心参数-r, --reset Reset the service before seeding对照源码实现seed.tsprisma seed实际支持三个 flagsFlag简写类型说明--reset-rboolean在 seed 之前先重置服务清空该服务 stage 中的全部数据--env-file-estring指定.env文件路径用于注入环境变量若路径不存在会报错--project-pstring指定 Prisma 定义文件prisma.yml的路径示例用初始数据填充服务prisma seed先重置服务再填充数据prisma seed --reset执行过程中CLI 会展示形如Seeding based on source的进度信息并在完成后输出耗时prettyTime便于确认种子是否成功执行。前置条件在prisma.yml中声明seedprisma seed本身不携带任何数据所有种子指令都来自服务定义文件prisma.yml的seed属性。该属性是一个对象二选一提供以下子属性详见 YAML-Structure.mdimport指向种子数据文件支持两种类型一个包含 GraphQL 操作mutation的.graphql文件一个包含 Normalized Data Format (NDF) 数据集的.zip文件。run一条 shell 命令用于实现import无法覆盖的更复杂种子场景。三个典型配置示例# 方式一引用包含种子 mutation 的 .graphql 文件 seed: import: database/seed.graphql # 方式二引用 NDF 格式的 .zip 数据集 seed: import: database/backup.zip # 方式三运行 Node 脚本完成更复杂的种子逻辑 seed: run: node script.js注意import与run不能同时出现。源码 Seeder.ts 会在二者同时存在时抛出错误Please provider either seed.import or seed.run but not both at the same time。自动种子首次部署即填充seed还有一个容易被忽视的重要行为种子会在服务首次部署时被隐式执行。也就是说只要在prisma.yml中配置了seed运行prisma deploy部署新服务后CLI 会自动执行种子逻辑无需手动调用prisma seed。若想禁用该行为可在部署时附加--no-seed标志手动补种或重跑种子则随时可以执行prisma seed/prisma seed --reset。种子执行原理从命令到数据的两条路径prisma seed的实际执行由Seeder类完成Seeder.ts。命令启动后Seed命令类会完成以下前置工作seed.ts校验--env-file路径是否存在加载prisma.yml定义this.definition.load获取服务名service与目标 cluster并初始化 cluster 客户端读取seed属性若不存在则报错依据import或run决定种子来源并交给Seeder。Seeder.seed()内部根据种子来源走两条不同路径路径一seed.import—— 导入 GraphQL 操作或 NDF 数据.graphql文件读取文件内容后用graphql库解析parse通过getOperations将文档拆分为一个个 OperationDefinition再逐条调用this.client.exec发送给服务端执行Seeder.ts。任何一条操作失败都会以Error while executing operation形式抛出。.zip文件复用Importer类位于 import/Importer.ts 对应的 import 模块将 NDF 数据集上传导入。源码对import文件有明确校验路径必须以.zip或.graphql结尾且文件必须真实存在否则分别抛出Source must end with .zip or .graphql与Path source does not exist错误Seeder.ts。路径二seed.run—— 执行任意 shell 命令将命令字符串按空白拆分为参数使用cross-spawn以当前工作目录为cwd启动子进程Seeder.ts子进程的 stdout / stderr 会实时打印到 CLI 输出子进程退出码非 0 时视为种子失败reject为 0 时成功resolve。这一机制让种子不再局限于 GraphQL你可以写 Node、TypeScript、Go 或任何脚本作为种子逻辑。参考文档也给出过多种语言的run示例例如seed: run: node ./data/seed.jsseed: run: ts-node ./data/seed.tsseed: run: go run ./data/seed.go--reset的作用时机--reset-r用于在种子前清空服务。从源码看重置动作在种子之前发生Seeder.ts无论走import还是run分支只要reset为true都会先调用this.reset(serviceName, stageName)即通过client.reset删除该servicestage下的全部数据然后再执行种子。CLI 会打印Resetting servicestage的进度与耗时。这也解释了官方示例中prisma seed --reset的语义先删除服务的所有数据再重新填充初始数据非常适合反复验证种子脚本的场景。实战演练从seed.graphql到prisma deploy全流程仓库教程 Data-Export--Import.md 演示了一个完整的种子实战流程可直接作为最小可运行示例第一步在服务目录下创建seed.graphql写入一条创建用户及其关联 posts 的 mutationmutation { createUser(data: { name: Sarah, posts: { create: [ { title: GraphQL is awesome }, { title: It really is }, { title: How to GraphQL is the best GraphQL tutorial } ] } }) { id } }第二步在prisma.yml中通过seed属性告诉 CLI 该文件的存在service: import-example stage: dev datamodel: datamodel.graphql # to enable auth, provide # secret: my-secret disableAuth: true seed: import: seed.graphql第三步运行prisma deployprisma deploy部署过程中 CLI 会自动执行seed.graphql中定义的 mutation向服务 API 发送创建请求。部署完成后打开 GraphQL Playground 发送以下查询即可验证种子是否生效{ users { name posts { title } } }若需要手动重跑种子例如修改了seed.graphql内容或在数据被改动后恢复初始状态则使用prisma seed prisma seed --reset常见错误速查场景报错信息解决办法prisma.yml中缺少seed属性In order to seed, you need to provide a seed property in your prisma.yml在prisma.yml中补充seed.import或seed.runseed同时声明了import与runPlease provider either seed.import or seed.run but not both at the same time二选一保留import文件后缀非法Source must end with .zip or .graphql将文件改为.zip或.graphql后缀import文件不存在Path source does not exist确认import相对路径与文件实际位置一致--env-file路径不存在--env-file path path does not exist修正.env文件路径小结prisma seed以prisma.yml中的seed属性为唯一数据来源支持import.graphqlmutation 或.zipNDF 数据与run任意 shell 命令两种种子机制-r, --reset会在种子前清空整个servicestage实现重置后再填充首次prisma deploy会自动执行种子可用--no-seed关闭完整的种子执行链路可参考 seed.ts 与 Seeder.ts 源码prisma.yml的seed属性完整规范见 YAML-Structure.md端到端示例见 Data-Export--Import.md。赞分享后端数据库GraphQL【免费下载链接】prisma1 Database Tools incl. ORM, Migrations and Admin UI (Postgres, MySQL MongoDB) [deprecated]项目地址https://gitcode.com/gh_mirrors/pr/prisma1点击查看免费下载相关推荐Prisma 数据种子填充完全指南prisma seed 命令与 prisma.yml 中的 seed 配置Prisma 数据种子填充完全指南prisma seed 命令与 prisma.yml 中的 seed 配置 prisma seed 是 Prisma CLI后端数据库GraphQLPrisma CLI prisma seed 命令详解用 seed 配置为服务注入初始化数据Prisma CLI prisma seed 命令详解用 seed 配置为服务注入初始化数据 prisma seed 是 Prisma CLI 提供的数据工作后端数据库GraphQLPrisma CLI 数据填充指南prisma seed 命令的使用与底层实现Prisma CLI 数据填充指南 prisma seed 命令的使用与底层实现 prisma seed 是 Prisma CLI 中用于向服务servic后端数据库GraphQL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

工控网络安全学习路线:从PLC协议解析到国产设备安全加固
工控网络安全学习路线:从PLC协议解析到国产设备安全加固

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:13:49

OpenLayers v3.12.1 补丁版深度解析:`ol.array` 比较函数 API 变更与排序回归修复
OpenLayers v3.12.1 补丁版深度解析:`ol.array` 比较函数 API 变更与排序回归修复

前端GIS数据可视化 【免费下载链接】openlayers OpenLayers 项目地址: https://gitcode.com/gh_mirrors/op/openlayers 点击查看 免费下载 v3.12.1 是 OpenLayers 在 v3.12.0 发布后推出的补丁版本,聚焦于修复 v3.12.0 引入的几处回归问题,其… · 2026/9/24 11:13:49

Dopamine 中 C51 分布投影函数 project_distribution 的完整解析:Eq7 的实现、参数与调用链
Dopamine 中 C51 分布投影函数 project_distribution 的完整解析:Eq7 的实现、参数与调用链

机器学习深度学习 【免费下载链接】dopamine Dopamine is a research framework for fast prototyping of reinforcement learning algorithms. 项目地址: https://gitcode.com/gh_mirrors/do/dopamine 点击查看 免费下载 dopamine.agents.rainbow.rainbow_agent.… · 2026/9/24 11:13:23

华擎主板BIOS救砖指南:CH341A编程器与SPI Flash刷写实战
华擎主板BIOS救砖指南:CH341A编程器与SPI Flash刷写实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:43:04

最长白列法:MT9V03X摄像头组赛道中线提取实战
最长白列法:MT9V03X摄像头组赛道中线提取实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:43:04

OsgEarth 加载CESIUM或ReadyMap 后,再加载模型,结果黑乎乎
OsgEarth 加载CESIUM或ReadyMap 后,再加载模型,结果黑乎乎

最近做了一个有关地球的OsgEarth的项目,发现OsgEarth 加载CESIUM或ReadyMap 后,再加载模型,结果黑乎乎。。。折腾数日,发现了解决方法。。。原理就不说了,,直接贴代码!/*** file ModelShaderLo… · 2026/9/24 11:42:57

千兆以太网实际吞吐为何达不到125MB/s?帧结构与IFG开销深度解析
千兆以太网实际吞吐为何达不到125MB/s?帧结构与IFG开销深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:42:48

晶振相位噪声如何影响5G光模块误码率?原理、选型与布局实战
晶振相位噪声如何影响5G光模块误码率?原理、选型与布局实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:42:41

基于计算机视觉的交互式电子沙盘:激光定位与坐标转换实战解析
基于计算机视觉的交互式电子沙盘:激光定位与坐标转换实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:42:41

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码