SuperAPI AI 工具集

prisma-database-setup-sqlite

数据与分析

查看项目

更新于 10-16 04:17

技能介绍

用途

本参考用于在 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 旁边创建该文件。