用途
本参考用于在 Prisma 中配置 SQLite 数据库。SQLite 为基于文件的数据库,无需额外前置条件。
主要配置
1. Schema 配置
在 prisma/schema.prisma 中设置数据源与生成器:
datasource db {
provider = "sqlite"
}
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="file:./dev.db"
连接字符串格式为 file:PATH,其中 PATH 是数据库文件的相对路径(通常相对于 schema 文件所在位置,但在 v7 中需结合 prisma.config.ts 的上下文确认)。
驱动适配器(需要 Prisma ORM 7)
Prisma ORM 7 默认使用查询编译器,因此必须使用驱动适配器。
better-sqlite3 适配器
安装适配器与驱动:
npm install @prisma/adapter-better-sqlite3 better-sqlite3
使用适配器实例化 Prisma Client:
import { PrismaClient } from '../generated/client'
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'
const adapter = new PrismaBetterSqlite3({
url: process.env.DATABASE_URL ?? 'file:./dev.db',
})
const prisma = new PrismaClient({ adapter })
LibSQL / Turso 适配器
适用于边缘环境兼容或 Turso:
安装:
npm install @prisma/adapter-libsql @libsql/client
实例化:
import { PrismaClient } from '../generated/client'
import { PrismaLibSql } from '@prisma/adapter-libsql'
const adapter = new PrismaLibSql({
url: process.env.TURSO_DATABASE_URL,
authToken: process.env.TURSO_AUTH_TOKEN,
})
const prisma = new PrismaClient({ adapter })
限制
- 不支持枚举(Enums):SQLite 不支持枚举,Prisma 会以 polyfill 方式处理或视为 String。
- 不支持标量列表(Scalar Lists):不直接支持
String[]。 - 并发:写操作会锁定文件。
常见问题
“Database file not found”:确保 DATABASE_URL 中的路径相对于 Prisma 运行位置或 schema 文件正确。file:./dev.db 会在 schema 旁边创建该文件。