Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

SQLite

Prisma ORM supports SQLite and SQLite-compatible databases. This includes local SQLite files, Turso's distributed libSQL, and Cloudflare's serverless D1.

Configure the SQLite provider in your Prisma schema:

title="schema.prisma"
datasource db {

  provider = "sqlite"

}

Set the connection URL in prisma.config.ts:

title="prisma.config.ts"
import { defineConfig } from "prisma/config";

export default defineConfig({

  schema: "prisma/schema.prisma",

  datasource: {

    url: "file:./dev.db", // or libsql:// for Turso

  },

});

Instead of Prisma's built-in driver, you can use JavaScript database drivers via driver adapters:

Local SQLite with better-sqlite3:

bun add @prisma/adapter-better-sqlite3
Bash
pnpm add @prisma/adapter-better-sqlite3
Bash
yarn add @prisma/adapter-better-sqlite3
Bash
npm install @prisma/adapter-better-sqlite3
TypeScript
import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";
import { PrismaClient } from "./generated/prisma";

const adapter = new PrismaBetterSqlite3({ url: "file:./prisma/dev.db" });
const prisma = new PrismaClient({ adapter });

Turso with @prisma/adapter-libsql:

import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";

import { PrismaClient } from "./generated/prisma";

const adapter = new PrismaBetterSqlite3({ url: "file:./prisma/dev.db" });

const prisma = new PrismaClient({ adapter });

Turso with @prisma/adapter-libsql:

bun add @prisma/adapter-libsql
Bash
pnpm add @prisma/adapter-libsql
Bash
yarn add @prisma/adapter-libsql
Bash
npm install @prisma/adapter-libsql
TypeScript
import { PrismaLibSQL } from "@prisma/adapter-libsql";
import { PrismaClient } from "./generated/prisma";

const adapter = new PrismaLibSQL({
  url: process.env.TURSO_DATABASE_URL,
  authToken: process.env.TURSO_AUTH_TOKEN,
});
const prisma = new PrismaClient({ adapter });

Cloudflare D1 with @prisma/adapter-d1:

import { PrismaLibSQL } from "@prisma/adapter-libsql";

import { PrismaClient } from "./generated/prisma";

const adapter = new PrismaLibSQL({

  url: process.env.TURSO_DATABASE_URL,

  authToken: process.env.TURSO_AUTH_TOKEN,

});

const prisma = new PrismaClient({ adapter });

Cloudflare D1 with @prisma/adapter-d1:

bun add @prisma/adapter-d1
Bash
pnpm add @prisma/adapter-d1
Bash
yarn add @prisma/adapter-d1
Bash
npm install @prisma/adapter-d1
TypeScript
import { PrismaD1 } from "@prisma/adapter-d1";
import { PrismaClient } from "./generated/prisma";

const adapter = new PrismaD1(env.DB); // D1 binding in Workers
const prisma = new PrismaClient({ adapter });
import { PrismaD1 } from "@prisma/adapter-d1";

import { PrismaClient } from "./generated/prisma";

const adapter = new PrismaD1(env.DB); // D1 binding in Workers

const prisma = new PrismaClient({ adapter });

Standard SQLite database files (.db). Connection URL format: file:./path/to/database.db

  • Use prisma migrate dev for schema changes
  • Store database file anywhere in your filesystem
  • Suited to development and small applications

Edge-hosted, distributed SQLite-compatible database.

  • Connection URL format: libsql://[hostname]
  • Requires authentication token
  • Supports embedded replicas for faster local reads
  • Use local SQLite file + Turso CLI for migrations (see Turso docs)

Key differences:

  • Remote access over HTTP
  • Replication and automated backups
  • Schema changes via prisma migrate diff + Turso CLI

Serverless SQLite database for Cloudflare Workers.

  • Automatic read-replication across regions
  • Schema changes via Wrangler CLI + prisma migrate diff
  • Local (.wrangler/state) and remote versions available

Key differences:

  • No transaction support currently
  • Migrations via Wrangler: wrangler d1 migrations apply
  • Deploy with Cloudflare Workers
Prisma ORM SQLite
String TEXT
Boolean BOOLEAN
Int INTEGER
BigInt INTEGER
Float REAL
Decimal DECIMAL
DateTime NUMERIC
Json JSONB
Bytes BLOB
Enum TEXT

Timestamp format with driver adapters:

Configure how DateTime values are stored:

const adapter = new PrismaBetterSqlite3(

  { url: "file:./dev.db" },

  { timestampFormat: "unixepoch-ms" } // For backward compatibility

);
  • ISO 8601 (default): Best for new projects
  • unixepoch-ms: Required for migrating from Prisma's native driver

Enum validation:

SQLite doesn't enforce enum values at the database level. Invalid values will cause Prisma Client queries to fail at runtime.

Integer overflow:

Prisma ORM validates that numbers fit within integer boundaries. If a value exceeds limits, you'll get a P2023 error.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu