SuperAPI AI 工具集

prisma-database-setup-cockroachdb

编程与开发

查看项目

更新于 10-16 04:17

技能介绍

用途

该技能用于配置 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。资料未提供其他版本兼容性、收费、价格或平台支持等更多信息。