--- name: prisma-database-setup description: Guides for configuring Prisma with different database providers (PostgreSQL, MySQL, SQLite, MongoDB, etc.). Use when setting up a new project, changing databases, or troubleshooting connection issues. Triggers on "configure postgres", "connect to mysql", "setup mongodb", "sqlite setup". license: MIT metadata: author: prisma version: "1.0.0" --- # Prisma Database Setup Comprehensive guides for configuring Prisma ORM with various database providers. ## When to Apply Reference this skill when: - Initializing a new Prisma project - Switching database providers - Configuring connection strings and environment variables - Troubleshooting database connection issues - Setting up database-specific features - Generating and instantiating Prisma Client ## System Prerequisites (Prisma ORM 7) - **Node.js 20.19.0+** - **TypeScript 5.4.0+** ## Bun Runtime If you're using Bun, run Prisma CLI commands with `bunx --bun prisma ...` so Prisma uses the Bun runtime instead of falling back to Node.js. ## Supported Databases | Database | Provider String | Notes | |----------|-----------------|-------| | PostgreSQL | `postgresql` | Default, full feature support | | MySQL | `mysql` | Widespread support, some JSON diffs | | SQLite | `sqlite` | Local file-based, no enum/scalar lists | | MongoDB | `mongodb` | **NOT SUPPORTED IN v7** (Use v6) | | SQL Server | `sqlserver` | Microsoft ecosystem | | CockroachDB | `cockroachdb` | Distributed SQL, Postgres-compatible | | Prisma Postgres | `postgresql` | Managed serverless database | ## Configuration Files Prisma v7 uses two main files for configuration: 1. **`prisma/schema.prisma`**: Defines the `datasource` block. 2. **`prisma.config.ts`**: Configures the connection URL (replaces env loading in schema). ## Driver Adapters (Prisma ORM 7) Prisma ORM 7 uses the query compiler by default, which **requires a driver adapter**. Choose the adapter and driver for your database and pass the adapter to `PrismaClient`. | Database | Adapter | JS Driver | |----------|---------|-----------| | PostgreSQL | `@prisma/adapter-pg` | `pg` | | CockroachDB | `@prisma/adapter-pg` | `pg` | | Prisma Postgres | `@prisma/adapter-ppg` | `@prisma/ppg` | | MySQL / MariaDB | `@prisma/adapter-mariadb` | `mariadb` | | SQLite | `@prisma/adapter-better-sqlite3` | `better-sqlite3` | | SQLite (Turso/LibSQL) | `@prisma/adapter-libsql` | `@libsql/client` | | SQL Server | `@prisma/adapter-mssql` | `node-mssql` | Example (PostgreSQL): ```ts 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 }) ``` ## Prisma Client Setup (Required) Prisma Client must be installed and generated for any database. 1. Install Prisma CLI and Prisma Client: ```bash npm install prisma --save-dev npm install @prisma/client ``` 1. Add a generator block (output is required in Prisma v7): ```prisma generator client { provider = "prisma-client" output = "../generated" } ``` 1. Generate Prisma Client: ```bash npx prisma generate ``` 1. Instantiate Prisma Client with the database-specific driver adapter: ```typescript 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 }) ``` 1. Re-run `prisma generate` after every schema change. ## Quick Reference ### PostgreSQL ```prisma datasource db { provider = "postgresql" } generator client { provider = "prisma-client" output = "../generated" } ``` ### MySQL ```prisma datasource db { provider = "mysql" } generator client { provider = "prisma-client" output = "../generated" } ``` ### SQLite ```prisma datasource db { provider = "sqlite" } generator client { provider = "prisma-client" output = "../generated" } ``` ### MongoDB (Prisma v6 only) ```prisma datasource db { provider = "mongodb" url = env("DATABASE_URL") } generator client { provider = "prisma-client-js" } ``` ## Rule Files See individual rule files for detailed setup instructions: ``` rules/postgresql.md rules/mysql.md rules/sqlite.md rules/mongodb.md rules/sqlserver.md rules/cockroachdb.md rules/prisma-postgres.md rules/prisma-client-setup.md ```