Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,10 @@ You can reference Prisma Client using a relative path from your application code

```ts
import { PrismaClient } from "./generated/prisma/client";
import { PrismaPg } from "@prisma/adapter-pg";

const client = new PrismaClient();
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL });
const client = new PrismaClient({ adapter });
```

Alternatively, you can use a linked dependency for cleaner imports.
Expand All @@ -178,8 +180,10 @@ Now, you should be able to reference your generated client using `db`!

```ts
import { PrismaClient } from "db";
import { PrismaPg } from "@prisma/adapter-pg";

const client = new PrismaClient();
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL });
const client = new PrismaClient({ adapter });
```

### Driver adapters and specific frameworks
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,29 @@ model User {

## Installation

[Install the Prisma CLI](/docs/orm/reference/prisma-cli-reference) and the Prisma Client library in your project:
[Install the Prisma CLI](/docs/orm/reference/prisma-cli-reference), the Prisma Client library, and the [driver adapter](/docs/orm/core-concepts/supported-databases/database-drivers) for your database:

```npm
```npm tab="PostgreSQL"
npm install prisma --save-dev
npm install @prisma/client @prisma/adapter-pg pg
```

```npm tab="MySQL / MariaDB"
npm install prisma --save-dev
npm install @prisma/client
npm install @prisma/client @prisma/adapter-mariadb mariadb
```

```npm tab="SQLite"
npm install prisma --save-dev
npm install @prisma/client @prisma/adapter-better-sqlite3 better-sqlite3
```

:::note

Prisma 7 requires a [driver adapter](/docs/orm/core-concepts/supported-databases/database-drivers) to connect to your database. Make sure your `package.json` includes `"type": "module"` for ESM support. See the [upgrade guide](/docs/guides/upgrade-prisma-orm/v7) for details.

:::

## Generate the Client API

Prisma Client is based on the models in Prisma Schema. To provide the correct types, you need generate the client code:
Expand All @@ -65,57 +81,70 @@ This will create a `generated` directory based on where you set the `output` to

## Importing Prisma Client

With the client generated, import the version for the given environment and create a new instance of it:
With the client generated, import it along with your [driver adapter](/docs/orm/core-concepts/supported-databases/database-drivers) and create a new instance:

```ts tab="Node"
```ts tab="PostgreSQL"
import { PrismaClient } from "./path/to/generated/prisma";
import { PrismaPg } from "@prisma/adapter-pg";

export const prisma = new PrismaClient({});
```

```ts tab="Edge"
import { PrismaClient } from "./path/to/generated/prisma/edge";
const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL!,
});

export const prisma = new PrismaClient({});
export const prisma = new PrismaClient({ adapter });
```

Your application should generally only create **one instance** of `PrismaClient`. How to achieve this depends on whether you are using Prisma ORM in a [long-running application](/docs/orm/prisma-client/setup-and-configuration/databases-connections#prismaclient-in-long-running-applications) or in a [serverless environment](/docs/orm/prisma-client/setup-and-configuration/databases-connections#prismaclient-in-serverless-environments) .
```ts tab="MySQL / MariaDB"
import { PrismaClient } from "./path/to/generated/prisma";
import { PrismaMariaDb } from "@prisma/adapter-mariadb";

Creating multiple instances of `PrismaClient` will create multiple connection pools and can hit the connection limit for your database. Too many connections may start to **slow down your database** and eventually lead to errors such as:
const adapter = new PrismaMariaDb({
host: "localhost",
user: "root",
database: "mydb",
});

```bash
Error in connector: Error querying the database: db error: FATAL: sorry, too many clients already
at PrismaClientFetcher.request
export const prisma = new PrismaClient({ adapter });
```

## Driver Adapters

Depending on the database being used, an adapter is needed in order for Prisma Client to be able send the appropriate SQL queries:

```ts tab="Prisma Postgre"
```ts tab="SQLite"
import { PrismaClient } from "./path/to/generated/prisma";
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaBetterSQLite3 } from "@prisma/adapter-better-sqlite3";

const adapter = new PrismaPg({
connectionString: process.env.DATABASE_URL!,
})
const adapter = new PrismaBetterSQLite3({
url: "file:./dev.db",
});

export const prisma = new PrismaClient({adapter});
export const prisma = new PrismaClient({ adapter });
```


```ts tab="Prisma Postgres Serverless"
```ts tab="PostgreSQL (Edge)"
import { PrismaClient } from "./path/to/generated/prisma/edge";
import { PrismaPostgresAdapter } from "@prisma/adapter-ppg";

const adapter = new PrismaPg({
const adapter = new PrismaPostgresAdapter({
connectionString: process.env.DATABASE_URL!,
})
});

export const prisma = new PrismaClient({adapter});
export const prisma = new PrismaClient({ adapter });
```

Find out what [driver adapter](/docs/orm/core-concepts/supported-databases/database-drivers) is needed for your database
:::warning

`PrismaClient` requires a driver adapter in Prisma 7. Calling `new PrismaClient()` without an `adapter` will result in an error.

:::

Find out what [driver adapter](/docs/orm/core-concepts/supported-databases/database-drivers) is needed for your database.

Your application should generally only create **one instance** of `PrismaClient`. How to achieve this depends on whether you are using Prisma ORM in a [long-running application](/docs/orm/prisma-client/setup-and-configuration/databases-connections#prismaclient-in-long-running-applications) or in a [serverless environment](/docs/orm/prisma-client/setup-and-configuration/databases-connections#prismaclient-in-serverless-environments).

Creating multiple instances of `PrismaClient` will create multiple connection pools and can hit the connection limit for your database. Too many connections may start to **slow down your database** and eventually lead to errors such as:

```bash
Error in connector: Error querying the database: db error: FATAL: sorry, too many clients already
at PrismaClientFetcher.request
```


## Use Prisma Client to send queries to your database
Expand Down
Loading