7.10.0 上测试) 。
前置条件
- Node.js 20.19、22.12 或 24 及以上版本
- 一个 ClickHouse Managed Postgres 服务
psql,用于创建数据库。也可以在 SQL 控制台中运行CREATE DATABASE语句。- macOS 用户需安装 Docker,用于运行 Prisma Migrate (参见运行迁移)
创建 ClickHouse Managed Postgres 服务
在 ClickHouse Cloud 控制台中,点击 New service,然后选择 Postgres。实例会在几分钟内准备就绪。详细操作步骤请参阅快速入门。获取连接信息
在服务的左侧边栏中点击 Connect。弹出的对话框会显示您的用户名、密码、服务器和端口,并提供现成的连接字符串。 本指南会用到两个连接,因为 Prisma 有两个组件需要与数据库通信:- **您的应用程序 (Prisma Client) **通过端口
6432经由 PgBouncer 连接。PgBouncer 负责连接池管理,使大量应用进程或 serverless 实例能够共享少量 Postgres 后端连接。 - **Prisma 命令行客户端 (Prisma Migrate) **通过端口
5432直接连接。Prisma Migrate 在运行期间会持有一个会话级 advisory 锁。在 PgBouncer 的事务池化模式下,该锁可能一直保留在某个池化后端连接上,而该后端随后又会为其他客户端提供服务,导致后续迁移被该锁阻塞。
<service-name>-ca-certificate.pem。您也可以在 Settings → CA Certificate 下找到该文件。此证书为您的实例所专有,用于以 sslmode=verify-full 模式建立连接,以确保您连接的确实是自己的服务器。
设置项目
创建一个 TypeScript 项目,并安装 Prisma 命令行客户端、Prisma Client、node-postgres 驱动程序 adapter 和dotenv:
请显式安装
prisma@7 和 @prisma/client@7。截至本文撰写时,npm 上 prisma 的 latest 标签指向的是 Prisma 8 的候选发布版本,其配置方式与本指南不同。tsconfig.json 文件:
初始化 Prisma
1
运行 prisma init
prisma/schema.prisma 和 Prisma 配置文件 prisma7.config.ts,在 .env 中添加占位用的 DATABASE_URL,并将生成的客户端加入 .gitignore (若这两个文件不存在则会自动创建) ,同时为 AI 编程智能体添加 Prisma 技能。Prisma 7.10 及更高版本将配置文件命名为 prisma7.config.ts,以免与 Prisma 8 的格式冲突。2
添加 CA 证书
将下载的 CA 证书移至项目根目录,并重命名为 证书的相对路径会基于执行命令时所在的目录进行解析,因此请在项目根目录下运行本指南中的所有命令。
ca-certificate.pem:配置连接
1
创建数据库
为应用创建一个数据库。将
<PASSWORD> 和主机替换为 Connect 对话框中的值:2
设置连接 URL
在 由于这两个 URL 由不同的驱动程序读取,因此使用的 TLS 参数也不同:
.env 中,将 prisma init 添加的占位 DATABASE_URL 替换为以下两个连接 URL,二者均指向 guide_prisma 数据库。密码请使用 Connect 对话框中提供的密码:DATABASE_URL由 node-postgres 通过@prisma/adapter-pg读取。它支持标准的sslmode=verify-full&sslrootcert=...参数,与 Connect 对话框中显示的参数一致。DIRECT_URL由 Prisma 命令行客户端的 schema 引擎读取,该引擎使用自己的一套参数:sslcert为 CA 证书的路径,sslaccept=strict用于启用证书和主机名验证。
3
将 Prisma CLI 指向直接连接
替换 在 Prisma 7 中,配置文件中的 URL 仅供 CLI 使用。Prisma Client 则通过驱动程序 adapter 获取连接,该 adapter 将在查询数据库一节中进行配置。
prisma7.config.ts 的内容:定义 schema 并运行迁移
1
添加模型
在
prisma/schema.prisma 末尾添加一个 Todo 模型:2
运行迁移
在 Linux 上,直接运行 Prisma Migrate:在 macOS 上,请在 Linux 容器中运行同一命令:Prisma 会在
prisma/migrations/ 中创建 SQL 迁移文件并执行:3
生成 Prisma Client
generated/prisma 目录中。此命令不会连接数据库,因此可在任意平台上运行。查询数据库
1
创建 Prisma Client
创建
lib/prisma.ts。PrismaPg adapter 使用 DATABASE_URL,经由 PgBouncer 进行连接:2
运行 CRUD 查询
创建 运行该脚本:
script.ts:3
通过 HTTP 提供数据
创建 启动服务器:在另一个终端中添加两条待办事项:在浏览器中打开 http://localhost:3000/todos 即可查看。响应如下:
server.ts。这是一个极简的 HTTP 服务器,通过 POST /todos 创建待办事项,并在收到任意 GET 请求时返回待办事项列表:在 SQL 控制台中验证
在 ClickHouse Cloud 控制台中,打开您服务的 SQL 控制台,展开您的数据库及public schema,然后选择 Todo 表。您还会看到 _prisma_migrations 表,Prisma Migrate 会在该表中记录已应用的迁移。
Todo 表中包含您通过 HTTP 端点添加的两行数据:
故障排查
后续步骤
- 连接:连接字符串、PgBouncer 和 TLS
- 设置:调优 Postgres 和 PgBouncer 参数
- 只读副本:扩展读密集型工作负载
- 本地开发:基于 Docker 中运行的本地 Postgres 进行开发
- 在生产环境中使用 Prisma Migrate:在 CI 管道中运行
prisma migrate deploy