用途
该技能用于配置 Prisma 与 CockroachDB 的集成,帮助开发者将 Prisma ORM 连接到 CockroachDB 集群。
前置条件
需要已有一个 CockroachDB 集群。
主要配置步骤
1. Schema 配置
在 prisma/schema.prisma 中设置数据源与生成器:
datasource db {
provider = "cockroachdb"
}
generator client {
provider = "prisma-client"
output = "../generated"
}
2. Config 配置(v7)
在 prisma.config.ts 中:
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
datasource: {
url: env('DATABASE_URL'),
},
})
3. 环境变量
在 .env 中设置:
DATABASE_URL="postgresql://user:password@host:26257/db?sslmode=verify-full"
注意:CockroachDB 使用 PostgreSQL 线路协议,因此 URL 通常看起来像 postgresql,但 schema 中的 provider 必须为 cockroachdb,以便正确处理 CRDB 的特定功能。
驱动适配器(需要 Prisma ORM 7)
Prisma ORM 7 默认使用查询编译器,因此必须使用驱动适配器。CockroachDB 兼容 PostgreSQL,因此使用 PostgreSQL 适配器。
安装适配器与驱动:
npm install @prisma/adapter-pg pg
使用适配器实例化 Prisma Client:
import 'dotenv/config'
import { PrismaClient } from '../generated/client'
import { PrismaPg } from '@prisma/adapter-pg'
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
ID 生成
CockroachDB 高效地使用 BigInt 或 UUID 作为 ID。
使用 BigInt 自增:
model User {
id BigInt @id @default(autoincrement()) // Uses unique_rowid()
}
或使用字符串 UUID:
model User {
id String @id @default(dbgenerated("gen_random_uuid()")) @db.Uuid
}
常见问题
Schema 内省
在执行 db pull 时,始终使用 provider = "cockroachdb",以确保正确的类型映射。
适用场景
适用于需要在 Prisma ORM 7 中连接和操作 CockroachDB 数据库的项目,尤其是需要处理 CRDB 特定类型映射和 ID 生成策略的场景。
限制
驱动适配器方式需要 Prisma ORM 7。资料未提供其他版本兼容性、收费、价格或平台支持等更多信息。