Prisma安装使用

发布时间:2026/6/30 2:56:02
Prisma安装使用 可以。下面按你自己动手的顺序来先做到db pullgenerate成功暂时不改业务代码。前置条件先确认本机 MySQL 已启动。库名一般是im_db.env.dev里是DB_NAMEim_db。库里已有表至少 admin 那几张IM 表也在同一库没关系。终端自测mysql-uroot-p-eUSE im_db; SHOW TABLES;能看到admin_users、users、chat_rooms等即可。第一步安装 Prisma在项目根目录im-h5-backendnpminstallprisma --save-devnpminstallprisma/clientprismaCLIdb pull、generateprisma/client运行时客户端第二步初始化 Prismanpx prisma init会生成prisma/ schema.prisma # 表结构定义 .env # 若已有可能只追加 DATABASE_URL第三步配置连哪个库关键Prisma默认读项目根目录的.env不是你们的.env.dev。做法 A推荐根目录.env写DATABASE_URL根据.env.dev里的账号写成一行把密码改成你的DATABASE_URLmysql://root:你的密码127.0.0.1:3306/im_db格式mysql://用户:密码主机:端口/数据库名做法 B临时指定 env 文件dotenv-e.env.dev -- npx prisma db pull需先npm i -D dotenv-cli不如 A 省事。打开prisma/schema.prisma确认顶部类似generator client { provider prisma-client-js } datasource db { provider mysql url env(DATABASE_URL) }「哪个库」DATABASE_URL最后那段/im_db。第四步从数据库反推表结构db pull确保 MySQL 可连、.env里DATABASE_URL正确然后npx prisma db pull含义连接im_db扫描该库下用户表不是整个 MySQL 所有库把表结构写入prisma/schema.prisma的model成功后终端会提示 introspected 多少张表打开prisma/schema.prisma应能看到大量model例如model admin_users { id BigInt id default(autoincrement()) username String unique password_hash String // ... } model users { // ... }这是预期现象IM admin 表会一起被拉下来同一库。表名可能是snake_case 的 model 名如admin_users后面可慢慢改成AdminUsermap。第一步不用改先能generate再说。若报错报错处理Can’t reach database检查 MySQL、host/portAccess denied用户名密码Unknown databaseim_db先建库或改 URLAuthentication pluginMySQL 8 用户插件问题查 MySQL 文档第五步检查schema.prisma浏览即可db pull后建议看一眼datasource仍是mysqlenv(DATABASE_URL)。model 数量是否和SHOW TABLES差不多。关系relationPrisma 可能自动猜错的以后改。此阶段不必删 IM 的 model也不必马上改 admin service。第六步生成客户端generatenpx prisma generate含义读prisma/schema.prisma里每一个model在node_modules/.prisma/client生成 TS 类型和PrismaClient成功会看到类似Generated Prisma Client ...和db pull的区别命令作用db pull数据库 → 写入schema.prismagenerateschema.prisma→ 生成prisma/client代码以后改表结构→ 再pull或手改 schema → 再generate。第七步验证是否生成成功可选小脚本在项目根新建临时文件scripts/test-prisma.ts测完可删import{PrismaClient}fromprisma/clientconstprismanewPrismaClient()asyncfunctionmain(){// model 名以你 pull 后的 schema 为准可能是 admin_users 或 AdminUserconstcountawaitprisma.admin_users.count()console.log(admin_users count:,count)}main().catch(console.error).finally(()prisma.$disconnect())运行npx tsx scripts/test-prisma.ts能打出数字说明连库 pull generate整条链路通了。若 TS 报错Property admin_users does not exist打开schema.prisma看实际 model 名admin_users还是AdminUser和代码保持一致。第八步建议在package.json加的脚本方便以后prisma:pull:prisma db pull,prisma:generate:prisma generate,postinstall:prisma generatepostinstall可选团队协作时有用你一个人可以先不加。第九步和现有pool的关系现在不用动现在 services/admin/* → 继续 mysql2 pool不变 services/im/* → 继续 pool不变 以后 新建 src/lib/prisma.ts → export prisma 逐个把 admin service 改成 prisma.xxx做完 pull generate 不会自动替换现有 SQL只是准备好了工具。推荐操作顺序 checklist □ npm install prisma prisma/client □ npx prisma init □ 根目录 .env 配置 DATABASE_URL → im_db □ npx prisma db pull □ 打开 prisma/schema.prisma 确认有 admin_users 等 □ npx prisma generate □ npx tsx scripts/test-prisma.ts 测 count只做 admin 时schema 要删 IM 表吗不用。db pull拉全库即可IM 的 model 留在 schema 里不影响只是generate会多生成一些类型不用就没开销习惯问题。以后迁 IM 时反而省事。以后每次改表怎么走场景做法别人改了 MySQL 表npx prisma db pull→npx prisma generate你用 migrate 改表改 schema →npx prisma migrate dev→ 自动 generate只改了 schema 手填npx prisma generate你们现阶段用pull对齐现有库即可migrate 可以 admin 稳定后再上。下一步pull/generate 成功之后建src/lib/prisma.ts单例PrismaClient。只改一个最简单的admin-settings.service.ts或admin-auth.service.ts。再迁其余 admin service。你如果愿意做完第四步或第六步后把prisma/schema.prisma前几行或报错贴出来我可以帮你看 model 名、该怎么写第一条prisma.xxx查询仍可在 Ask 模式。