Prisma安装使用 发布时间:2026/6/30 2:56:02 可以。下面按你自己动手的顺序来先做到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 模式。
Linux x86-64 DMA映射探秘(二)——SWIOTLB的bounce buffer机制 2026/6/30 2:56:02 1. SWIOTLB的bounce buffer机制揭秘 第一次听说SWIOTLB这个名词时,我也是一头雾水。直到后来在实际项目中遇到老设备DMA传输失败的问题,才真正理解这个机制的巧妙之处。简单来说,SWIOTLB就像是给老设备配了个"翻译官",让…
.Net如何在AgentFramework中给AI智能体给AI添加执行python脚本和运行代码的能力后——后续可用于对接openClaw技能 2026/6/30 2:56:02 一步在上一篇文章中,我们学习了如何为AgentFramework添加Agent Skill命令。接下来,我们将共同封装一个可执行的Python技能,具体实现代码如下:using System.ComponentModel; using System.Diagnostics; namespace kevin.AI.AgentFr…
【RISC-V】解决WSL2命令行总是出现bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)的问题 2026/6/30 2:56:01 问题描述:主包在.~/source里加入了en_US.UTF-8,使环境变量生效后,后来又去~/source删除了,然后接下来无论运行什么命令都有这个警告冒出来解决方法:依次运行sudo apt update sudo apt install -y locales sudo locale-…
线程池_实现多线程方式四 2026/6/30 4:16:04 问题:之前来一个线程任务,就需要创建一个线程对象去执行,用完还要销毁线程对象,如果线程任务多了,就需要频繁创建线程对象和销毁线程对象(核心问题),这样会耗费内存资源,所以我们就想线程对象能不能循环利用,用的时候直接拿线程对象,用完还回去1.如何创建…
基于Surfer与Voxler数据处理及可视化;Surfer投影变换/矢量图+Voxler切片渲染/测井三维化 2026/6/30 4:16:04 Surfer和Voxler分别是美国Golden Software 公司开发的用于二维和三维数据可视化软件,具有强大的数据处理和插值功能,软件主要应用于气象、环境和地质(以及生物、医学等)等领域。其中Surfer主要用于绘制二维等值线图、三维表面图以…
Ambari 大数据环境搭建指南 —— 从原理到实战 2026/6/30 4:16:04 第一部分:基础概念 —— 你需要知道的三个关键词1. Yum —— Linux 里的“软件超市”是什么:Yum 是 Linux 系统中的一个软件包管理工具。你可以把它想象成一个“软件超市”,只要告诉它你要安装什么软件(比如 Java、Python…
CasaOS国内无痛部署指南:30分钟搭建个人云服务器与Docker应用生态 2026/6/30 4:16:04 如果你是一位对家庭服务器、NAS私有云感兴趣的技术爱好者,或者是一名开发者,最近可能频繁听到一个名字:CasaOS。它被许多社区和媒体称为“最优雅的家庭云操作系统”,但当你真正去尝试时,可能会遇到一系列问题ÿ…
软考高级——系统分析师备考心得(自学) 2026/6/30 4:16:04 这不是个专业的考试文章/攻略,更多是对自己这一段经历的记录吧。我是在职自学的,没有报班,产生的费用只有买教材和报名。当然并非不推荐报班,只是想省点钱hh,大概报班确实比自学更好,毕竟有专业的老师带&am…
电容降额实战指南:从规范到选型 2026/6/30 4:06:04 1. 电容降额设计的基本概念 第一次接触电容降额设计时,我也被各种专业术语绕得头晕。直到有一次项目中的电源模块连续烧毁三个钽电容后,我才真正理解降额设计的重要性。简单来说,电容降额就像给汽车限速——虽然发动机能飙到200km/hÿ…
Python QQ机器人完整指南:5分钟搭建智能消息助手 2026/6/30 0:05:49 Python QQ机器人完整指南:5分钟搭建智能消息助手 【免费下载链接】qqbot QQBot: A conversation robot base on Tencents SmartQQ 项目地址: https://gitcode.com/gh_mirrors/qq/qqbot 你是否想要一个能自动回复消息、定时提醒任务的智能QQ机器人?…
SQLMap高级用法:--data与--method参数实战非标准POST请求注入 2026/6/30 0:05:49 1. 项目概述:当SQLMap遇上“非标准”POST请求在渗透测试或者安全研究的过程中,我们经常会遇到一些“不听话”的Web应用。它们不像教科书里的例子那样,规规矩矩地用application/x-www-form-urlencoded格式发送POST请求。你可能会遇到用JSON传参…
API安全实战:从三层滤网防御到系统化加固指南 2026/6/30 0:05:49 1. 项目概述:为什么API安全不再是“选修课”最近在跟几个做后端开发的朋友聊天,发现一个挺有意思的现象:大家现在对数据库安全、服务器防火墙配置都挺上心的,各种加密、审计、监控手段齐上阵,但一聊到API接口ÿ…
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告 2026/6/29 13:45:10 6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉? 2026/6/29 1:56:38 引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…