You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nestjs项目Prisma seed执行提示成功但PostgreSQL数据库无数据如何解决

Prisma 执行seed提示成功但数据库无变更排查方案

1. 先确认seed.ts是否真的被执行

直接在你的seed.ts main 函数最开头加入打印日志,运行seed命令后观察终端是否输出了对应的内容:

async function main() {
  console.log('✅ 我的seed文件真的跑了!') // 新增这行测试
  console.log(`Start seeding ...`);
  // 原有逻辑不变
}

如果运行命令后没看到这行日志,说明seed.ts完全没被执行,走下面的配置排查。

2. 检查package.json的seed配置

Prisma需要在package.json中显式指定seed执行命令,漏加的话会出现提示成功但实际没跑代码的情况,配置格式如下:

{
  "name": "你的项目名",
  "dependencies": {
    // 你的项目依赖保留不变
  },
  // 新增prisma配置块
  "prisma": {
    "seed": "ts-node prisma/seed.ts"
  }
}

注意路径要和你实际seed.ts的存放路径对应,默认seed.ts是放在项目根目录的prisma文件夹下,如果你放在其他位置要修改对应路径。

3. 验证数据库连接指向是否正确

很多时候是.env里的DATABASE_URL配置错了,数据插到了其他库/其他环境你没察觉,可以在seed.ts里加一行打印当前连接的数据库信息确认:

async function main() {
  // 加这行看当前连的库是否符合预期
  const dbName = await prisma.$queryRaw`SELECT current_database()`
  console.log('当前连接的数据库:', dbName)
  console.log(`Start seeding ...`);
  // 原有逻辑不变
}

4. 直接手动执行seed.ts排查

绕开prisma的seed命令,直接手动执行文件看是否正常:

# 先安装必要依赖
yarn add -D ts-node typescript @types/node
# 执行你的seed.ts,注意修改为对应实际路径
npx ts-node prisma/seed.ts

如果手动执行后数据库有数据、日志正常打印,说明是prisma cli的配置问题,建议升级prisma到最新稳定版,目前seed功能已经是正式特性,不需要加--preview-feature参数,升级后直接跑yarn prisma db seed即可。

5. 其他可能的原因

  • 你的User模型存在未设置默认值的必填字段,seed里传的参数不全,但因为代码没被执行所以没触发报错
  • 使用了旧版本prisma的preview seed命令存在已知bug,升级到4.x以上稳定版即可修复

内容的提问来源于stack exchange,提问作者Developer Hub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:18:01