diff --git a/content/800-guides/010-data-migration.mdx b/content/800-guides/010-data-migration.mdx index 81e58874e3..b0f223dc46 100644 --- a/content/800-guides/010-data-migration.mdx +++ b/content/800-guides/010-data-migration.mdx @@ -82,12 +82,19 @@ export default defineConfig({ :::note -You'll need to install the `dotenv` package to load environment variables. If you haven't already, install it using your package manager: +You'll need to install the required packages. If you haven't already, install them using your package manager: ```bash -npm install dotenv +npm install prisma @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg pg dotenv ``` +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: + ::: ### 1.3. Create a development branch diff --git a/content/800-guides/050-migrate-from-mongoose.mdx b/content/800-guides/050-migrate-from-mongoose.mdx index e9a4b2b306..e804a21f59 100644 --- a/content/800-guides/050-migrate-from-mongoose.mdx +++ b/content/800-guides/050-migrate-from-mongoose.mdx @@ -14,6 +14,12 @@ This guide shows you how to migrate your application from Mongoose to Prisma ORM You can learn how Prisma ORM compares to Mongoose on the [Prisma ORM vs Mongoose](/orm/more/comparisons/prisma-and-mongoose) page. +:::warning + +This guide currently assumes you are using **Prisma ORM v6**. Support for Prisma ORM v7 with MongoDB is in progress. + +::: + ## Prerequisites Before starting this guide, make sure you have: diff --git a/content/800-guides/060-migrate-from-drizzle.mdx b/content/800-guides/060-migrate-from-drizzle.mdx index 0b53916367..2bc012a524 100644 --- a/content/800-guides/060-migrate-from-drizzle.mdx +++ b/content/800-guides/060-migrate-from-drizzle.mdx @@ -50,9 +50,16 @@ Prisma ORM lends itself really well for **incremental adoption**. This means, yo The first step to adopt Prisma ORM is to [install the Prisma CLI](/orm/tools/prisma-cli#installation) in your project: ```terminal copy -npm install prisma --save-dev && npm install @prisma/client +npm install prisma @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg pg ``` +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: + ## Step 2. Introspect your database ### 2.1. Set up Prisma ORM @@ -252,15 +259,9 @@ model Todo { } ``` -## Step 3. Install and generate Prisma Client - -As a next step, you can install Prisma Client in your project so that you can start replacing the database queries in your project that are currently made with Drizzle: - -```terminal -npm install @prisma/client -``` +## Step 3. Generate Prisma Client -After installing, you need to run `generate` in order to have your schema reflected in TypeScript types and autocomplete. +Now that you have installed Prisma Client in Step 1, you need to run `generate` in order to have your schema reflected in TypeScript types and autocomplete. ```terminal npx prisma generate diff --git a/content/800-guides/080-turborepo.mdx b/content/800-guides/080-turborepo.mdx index c39d302495..11b22c1ea7 100644 --- a/content/800-guides/080-turborepo.mdx +++ b/content/800-guides/080-turborepo.mdx @@ -93,8 +93,8 @@ Next, install the required dependencies to use Prisma ORM. Use your preferred pa ```terminal -npm install prisma --save-dev -npm install @prisma/client dotenv +npm install prisma @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` @@ -102,8 +102,8 @@ npm install @prisma/client dotenv ```terminal -yarn add prisma --dev -yarn add @prisma/client dotenv +yarn add prisma @types/pg --dev +yarn add @prisma/client @prisma/adapter-pg dotenv pg ``` @@ -111,42 +111,16 @@ yarn add @prisma/client dotenv ```terminal -pnpm add prisma --save-dev -pnpm add @prisma/client dotenv +pnpm add prisma @types/pg --save-dev +pnpm add @prisma/client @prisma/adapter-pg dotenv pg ``` -:::note - -If using [Prisma Postgres](https://prisma.io/postgres), install the `@prisma/extension-accelerate` package: - - - - -```terminal -npm install @prisma/extension-accelerate -``` - - - - - -```terminal -yarn add @prisma/extension-accelerate -``` - - - - - -```terminal -pnpm add @prisma/extension-accelerate -``` +:::info - - +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). ::: @@ -389,27 +363,6 @@ Next, export the generated types and an instance of `PrismaClient` so it can use In the `packages/database` directory, create a `src` folder and add a `client.ts` file. This file will define an instance of `PrismaClient`: - - - -```ts file=packages/database/src/client.ts -import { PrismaClient } from "../generated/prisma"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const globalForPrisma = global as unknown as { prisma: PrismaClient }; - -export const prisma = - globalForPrisma.prisma || new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, - }).$extends(withAccelerate()); - -if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; -``` - - - - - ```ts file=packages/database/src/client.ts import { PrismaClient } from "../generated/prisma"; import { PrismaPg } from '@prisma/adapter-pg'; @@ -428,9 +381,6 @@ export const prisma = if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; ``` - - - Then create an `index.ts` file in the `src` folder to re-export the generated prisma types and the `PrismaClient` instance: ```ts file=packages/database/src/index.ts diff --git a/content/800-guides/090-nextjs.mdx b/content/800-guides/090-nextjs.mdx index d5e242f4ac..2c67c33c4a 100644 --- a/content/800-guides/090-nextjs.mdx +++ b/content/800-guides/090-nextjs.mdx @@ -66,20 +66,16 @@ cd nextjs-prisma To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -287,32 +283,9 @@ mkdir -p lib && touch lib/prisma.ts Now, add the following code to your `lib/prisma.ts` file: - - ```typescript file=lib/prisma.ts showLineNumbers //add-start import { PrismaClient } from '../app/generated/prisma' -import { withAccelerate } from '@prisma/extension-accelerate' - -const globalForPrisma = global as unknown as { - prisma: PrismaClient -} - -const prisma = globalForPrisma.prisma || new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()) - -if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma - -export default prisma -//add-end -``` - - - -```typescript file=lib/prisma.ts showLineNumbers -//add-start -import { PrismaClient } from '../src/app/generated/prisma' import { PrismaPg } from '@prisma/adapter-pg' const globalForPrisma = global as unknown as { @@ -332,8 +305,6 @@ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma export default prisma //add-end ``` - - This file creates a Prisma Client and attaches it to the global object so that only one instance of the client is created in your application. This helps resolve issues with hot reloading that can occur when using Prisma ORM with Next.js in development mode. @@ -707,9 +678,10 @@ Before you deploy, you also need to tell Vercel to make sure that the Prisma Cli "seed": "tsx prisma/seed.ts" }, "dependencies": { + "@prisma/adapter-pg": "^6.2.1", "@prisma/client": "^6.2.1", - "@prisma/extension-accelerate": "^1.2.1", "next": "15.1.4", + "pg": "^8.13.1", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/content/800-guides/130-docker.mdx b/content/800-guides/130-docker.mdx index 031b660565..caf402bcde 100644 --- a/content/800-guides/130-docker.mdx +++ b/content/800-guides/130-docker.mdx @@ -78,10 +78,16 @@ This will generate a `package.json` file: Next, install the Prisma CLI as a development dependency and Express.js for the server: ```terminal -npm install prisma --save-dev && npm install @prisma/client -npm install express +npm install prisma @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg pg dotenv express ``` +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: + ### 1.3. Set up Prisma ORM Now, initialize Prisma to generate the necessary files: diff --git a/content/800-guides/140-use-prisma-in-pnpm-workspaces.mdx b/content/800-guides/140-use-prisma-in-pnpm-workspaces.mdx index eeba51cc96..8c96b6c3e8 100644 --- a/content/800-guides/140-use-prisma-in-pnpm-workspaces.mdx +++ b/content/800-guides/140-use-prisma-in-pnpm-workspaces.mdx @@ -93,18 +93,13 @@ pnpm install Then, add additional dependencies: ```terminal -pnpm add typescript tsx @types/node -D -``` - -Then install the Prisma Client extension required to use Prisma Postgres: - -```terminal -pnpm add @prisma/extension-accelerate +pnpm add typescript tsx @types/node @types/pg -D +pnpm add @prisma/adapter-pg pg ``` :::info -This guide uses [Prisma Postgres](/postgres/getting-started). If you plan to use a different database, you can omit the [@prisma/extension-accelerate package](https://www.npmjs.com/package/@prisma/extension-accelerate/). +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). ::: @@ -215,27 +210,27 @@ pnpm run db:migrate When prompted by the CLI, enter a descriptive name for your migration. -Once the migration is successful, create a `client.ts` file to initialize Prisma Client with the Accelerate extension: +Once the migration is successful, create a `client.ts` file to initialize Prisma Client with a driver adapter: ```ts file=database/client.ts // add-start import { PrismaClient } from "./generated/client"; -import { withAccelerate } from "@prisma/extension-accelerate"; +import { PrismaPg } from "@prisma/adapter-pg"; -// Instantiate the extended Prisma client to infer its type -const extendedPrisma = new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()); -type ExtendedPrismaClient = typeof extendedPrisma; +const adapter = new PrismaPg({ + connectionString: process.env.DATABASE_URL, +}); // Use globalThis for broader environment compatibility const globalForPrisma = globalThis as typeof globalThis & { - prisma?: ExtendedPrismaClient; + prisma?: PrismaClient; }; // Named export with global memoization -export const prisma: ExtendedPrismaClient = - globalForPrisma.prisma ?? extendedPrisma; +export const prisma: PrismaClient = + globalForPrisma.prisma ?? new PrismaClient({ + adapter, + }); if (process.env.NODE_ENV !== "production") { globalForPrisma.prisma = prisma; @@ -243,12 +238,6 @@ if (process.env.NODE_ENV !== "production") { // add-end ``` -:::info - -If you're not using [Prisma Postgres](/postgres/getting-started) for your database, exclude the `import { withAccelerate }` line and `.$extends(withAccelerate())` from the line following it. - -::: - Then, create an `index.ts` file to re-export the instance of Prisma Client and all generated types: ```ts file=database/index.ts diff --git a/content/800-guides/150-multiple-databases.mdx b/content/800-guides/150-multiple-databases.mdx index 854b33908c..6b65082464 100644 --- a/content/800-guides/150-multiple-databases.mdx +++ b/content/800-guides/150-multiple-databases.mdx @@ -58,21 +58,16 @@ cd my-multi-client-app In this section, you will create two separate Prisma Postgres instances—one for user data and one for post data. You will also configure the Prisma schema and environment variables for each. -First, install Prisma as a development dependency: +First, install Prisma and the required dependencies: ```terminal -npm install -D prisma -``` - -Install the [Prisma Client extension](https://www.npmjs.com/package/@prisma/extension-accelerate) that is required to use Prisma Postgres: - -```terminal -npm install @prisma/extension-accelerate +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` :::info -If you are not using a Prisma Postgres database, you won't need the `@prisma/extension-accelerate` package. +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). ::: @@ -293,11 +288,15 @@ In `lib/user-prisma-client.ts`, add the following code: ```ts file=lib/user-prisma-client.ts //add-start import { PrismaClient } from "../prisma-user-database/user-database-client-types"; -import { withAccelerate } from "@prisma/extension-accelerate" +import { PrismaPg } from "@prisma/adapter-pg"; + +const adapter = new PrismaPg({ + connectionString: process.env.PPG_USER_DATABASE_URL, +}); const getPrisma = () => new PrismaClient({ - accelerateUrl: process.env.PPG_USER_DATABASE_URL, -}).$extends(withAccelerate()); + adapter, +}); const globalForUserDBPrismaClient = global as unknown as { userDBPrismaClient: ReturnType; @@ -311,12 +310,6 @@ if (process.env.NODE_ENV !== "production") //add-end ``` -:::info - -If you are not using a Prisma Postgres database, do not extend `PrismaClient` with the `withAccelerate` client extension. - -::: - ### 3.2. Instantiate and export the Prisma Client for the post database In `lib/post-prisma-client.ts`, add this code: @@ -324,11 +317,15 @@ In `lib/post-prisma-client.ts`, add this code: ```ts file=lib/post-prisma-client.ts //add-start import { PrismaClient } from "../prisma-post-database/post-database-client-types"; -import { withAccelerate } from "@prisma/extension-accelerate" +import { PrismaPg } from "@prisma/adapter-pg"; + +const adapter = new PrismaPg({ + connectionString: process.env.PPG_POST_DATABASE_URL, +}); const getPrisma = () => new PrismaClient({ - accelerateUrl: process.env.PPG_POST_DATABASE_URL, -}).$extends(withAccelerate()); + adapter, +}); const globalForPostDBPrismaClient = global as unknown as { postDBPrismaClient: ReturnType; @@ -342,12 +339,6 @@ if (process.env.NODE_ENV !== "production") //add-end ``` -:::info - -If you are not using a Prisma Postgres database, do not extend `PrismaClient` with the `withAccelerate` client extension. - -::: - ## 4. Integrate multiple Prisma Clients in your Next.js app Modify your application code to fetch data from both databases. Update the `app/page.tsx` file as follows: diff --git a/content/800-guides/160-tanstack-start.mdx b/content/800-guides/160-tanstack-start.mdx index 85ce70c040..1dd47c3004 100644 --- a/content/800-guides/160-tanstack-start.mdx +++ b/content/800-guides/160-tanstack-start.mdx @@ -306,20 +306,16 @@ Your file tree should look like this (without `node_modules`): To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -501,20 +497,6 @@ Create a `/lib` directory and a `prisma.ts` file inside it. This file will be us Set up the Prisma client like this: - - -```tsx file=src/lib/prisma.ts -import { PrismaClient } from "../generated/prisma/client.js"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const prisma = new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()); - -export default prisma; -``` - - ```tsx file=src/lib/prisma.ts import { PrismaClient } from "../generated/prisma/client.js"; import { PrismaPg } from "@prisma/adapter-pg"; @@ -529,8 +511,6 @@ const prisma = new PrismaClient({ export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/170-react-router-7.mdx b/content/800-guides/170-react-router-7.mdx index 7a8b96d633..473ddc1d3d 100644 --- a/content/800-guides/170-react-router-7.mdx +++ b/content/800-guides/170-react-router-7.mdx @@ -46,20 +46,16 @@ cd react-router-7-prisma To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -240,27 +236,6 @@ Inside of your `app` directory, create a new `lib` directory and add a `prisma.t Set up the Prisma client like this: - - -```typescript file=app/lib/prisma.ts -import { PrismaClient } from "../generated/prisma/client.js"; -import { withAccelerate } from '@prisma/extension-accelerate' - -const globalForPrisma = global as unknown as { - prisma: PrismaClient -} - -const prisma = globalForPrisma.prisma || new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()) - -if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma - -export default prisma -``` - - - ```typescript file=app/lib/prisma.ts import { PrismaClient } from "../generated/prisma/client.js"; import { PrismaPg } from "@prisma/adapter-pg"; @@ -281,8 +256,6 @@ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma export default prisma ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/180-solid-start.mdx b/content/800-guides/180-solid-start.mdx index 4efe665593..98a83742bd 100644 --- a/content/800-guides/180-solid-start.mdx +++ b/content/800-guides/180-solid-start.mdx @@ -66,20 +66,16 @@ export default function App() { To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -265,21 +261,6 @@ mkdir -p lib && touch lib/prisma.ts Add the following code to create a Prisma Client instance: - - -```typescript file=lib/prisma.ts -import { PrismaClient } from "../src/generated/prisma/client.js"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const prisma = new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()); - -export default prisma; -``` - - - ```typescript file=lib/prisma.ts import { PrismaClient } from "../src/generated/prisma/client.js"; import { PrismaPg } from "@prisma/adapter-pg"; @@ -294,8 +275,6 @@ const prisma = new PrismaClient({ export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/190-data-dog.mdx b/content/800-guides/190-data-dog.mdx index ef7b600aae..c87815ba5b 100644 --- a/content/800-guides/190-data-dog.mdx +++ b/content/800-guides/190-data-dog.mdx @@ -139,13 +139,18 @@ DATABASE_URL="postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample" -If you're using Prisma Postgres, also install: +Install the driver adapter for PostgreSQL: ```terminal -npm i @prisma/extension-accelerate +npm i @prisma/adapter-pg pg +npm i -D @types/pg ``` -This extension enables you to [cache your Prisma queries](/postgres/database/caching). +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: ### 2.2. Define models @@ -282,67 +287,17 @@ export { tracer }; Create a `src/client.ts` to hold your Prisma Client instantiation: - - ```ts file=src/client.ts import { tracer } from "./tracer"; -import { withAccelerate } from "@prisma/extension-accelerate"; import { PrismaClient } from "./generated/prisma"; +import { PrismaPg } from "@prisma/adapter-pg"; -const prisma = new PrismaClient({ - log: [{ emit: "event", level: "query" }], -}) - .$on("query", (e) => { - const span = tracer.startSpan(`prisma_raw_query`, { - childOf: tracer.scope().active() || undefined, - tags: { - "prisma.rawquery": e.query, - }, - }); - span.finish(); - }) - .$extends({ - query: { - async $allOperations({ operation, model, args, query }) { - const span = tracer.startSpan( - `prisma_query_${model?.toLowerCase()}_${operation}`, - { - tags: { - "prisma.operation": operation, - "prisma.model": model, - "prisma.args": JSON.stringify(args), - "prisma.rawQuery": query, - }, - childOf: tracer.scope().active() || undefined, - } - ); - - try { - const result = await query(args); - span.finish(); - return result; - } catch (error) { - span.setTag("error", error); - span.finish(); - throw error; - } - }, - }, - }) - .$extends(withAccelerate()); - -export { prisma }; -``` - - - - -```ts file=src/client.ts -import { tracer } from "./tracer"; - -import { PrismaClient } from "./generated/prisma"; +const adapter = new PrismaPg({ + connectionString: process.env.DATABASE_URL!, +}); const prisma = new PrismaClient({ + adapter, log: [{ emit: "event", level: "query" }], }) .$on("query", (e) => { @@ -382,12 +337,10 @@ const prisma = new PrismaClient({ }, }, }); + export { prisma }; ``` - - - The setup above gives you more control over how queries are traced: - Tracing is initialized as early as possible by importing the `tracer` before creating the Prisma Client. diff --git a/content/800-guides/190-sveltekit.mdx b/content/800-guides/190-sveltekit.mdx index eba7f3fefc..0d05d84226 100644 --- a/content/800-guides/190-sveltekit.mdx +++ b/content/800-guides/190-sveltekit.mdx @@ -60,20 +60,16 @@ That's it! Svelte makes it a very simple process to get up and running. At this To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -260,22 +256,6 @@ The `DATABASE_URL` is stored in the `.env` file. To access it, you'll need to im Set up the Prisma client like this: - - -```tsx file=src/lib/prisma.ts -import { PrismaClient } from '../generated/prisma/client.js'; -import { DATABASE_URL } from '$env/static/private'; -import { withAccelerate } from '@prisma/extension-accelerate'; - -const prisma = new PrismaClient({ - accelerateUrl: DATABASE_URL -}).$extends(withAccelerate()); - -export default prisma; - -``` - - ```tsx file=src/lib/prisma.ts import { PrismaClient } from '../generated/prisma/client.js'; import { DATABASE_URL } from '$env/static/private'; @@ -291,8 +271,6 @@ const prisma = new PrismaClient({ export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/200-clerk-nextjs.mdx b/content/800-guides/200-clerk-nextjs.mdx index 09e849de66..578c73316f 100644 --- a/content/800-guides/200-clerk-nextjs.mdx +++ b/content/800-guides/200-clerk-nextjs.mdx @@ -219,21 +219,16 @@ const Navbar = () => { To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma --save-dev -npm install tsx --save-dev -npm install @prisma/extension-accelerate +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma --save-dev -npm install tsx --save-dev -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -330,29 +325,6 @@ It is recommended that you add `/app/generated/prisma` to your `.gitignore` file In the root directory, create a `lib` directory and a `prisma.ts` file inside it: - - -```tsx file=lib/prisma.ts showLineNumbers -//add-start -import { PrismaClient } from "../app/generated/prisma"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const globalForPrisma = global as unknown as { - prisma: PrismaClient; -}; - -const prisma = - globalForPrisma.prisma || new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()); - -if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; - -export default prisma; -//add-end -``` - - ```tsx file=lib/prisma.ts showLineNumbers //add-start import { PrismaClient } from "../app/generated/prisma"; @@ -375,8 +347,6 @@ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; export default prisma; //add-end ``` - - ## 4. Wire Clerk to the database diff --git a/content/800-guides/220-astro.mdx b/content/800-guides/220-astro.mdx index beae2a5d44..8ea3706ab3 100644 --- a/content/800-guides/220-astro.mdx +++ b/content/800-guides/220-astro.mdx @@ -49,20 +49,16 @@ npx create-astro@latest To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -273,21 +269,6 @@ touch src/lib/prisma.ts Set up the Prisma client like this: - - -```typescript file=src/lib/prisma.ts -import { PrismaClient } from "../../prisma/generated/client"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const prisma = new PrismaClient({ - accelerateUrl: import.meta.env.DATABASE_URL, -}).$extends(withAccelerate()); - -export default prisma; -``` - - - ```typescript file=src/lib/prisma.ts import { PrismaClient } from "../../prisma/generated/client"; import { PrismaPg } from "@prisma/adapter-pg"; @@ -302,8 +283,6 @@ const prisma = new PrismaClient({ export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/230-betterauth-nextjs.mdx b/content/800-guides/230-betterauth-nextjs.mdx index dbb8c590e2..7c55be4ee8 100644 --- a/content/800-guides/230-betterauth-nextjs.mdx +++ b/content/800-guides/230-betterauth-nextjs.mdx @@ -57,20 +57,16 @@ Next, you'll add Prisma to your project to manage your database. Install the necessary Prisma packages. The dependencies differ slightly depending on whether you use Prisma Postgres with Accelerate or another database. - - ```terminal -npm install prisma --save-dev -npm install @prisma/extension-accelerate @prisma/client +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma --save-dev -npm install @prisma/client @prisma/adapter-pg -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -136,27 +132,6 @@ touch src/lib/prisma.ts Set up the Prisma client like this: - - -```tsx file=src/lib/prisma.ts -import { PrismaClient } from "@/generated/prisma"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const globalForPrisma = global as unknown as { - prisma: PrismaClient; -}; - -const prisma = - globalForPrisma.prisma || new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, - }).$extends(withAccelerate()); - -if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; - -export default prisma; -``` - - ```tsx file=src/lib/prisma.ts import { PrismaClient } from "@/generated/prisma"; import { PrismaPg } from "@prisma/adapter-pg"; @@ -178,8 +153,6 @@ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/320-permit-io-access-control.mdx b/content/800-guides/320-permit-io-access-control.mdx index 5d13d0594c..c5d170dfeb 100644 --- a/content/800-guides/320-permit-io-access-control.mdx +++ b/content/800-guides/320-permit-io-access-control.mdx @@ -47,10 +47,16 @@ npm init -y Install application and development dependencies: ```terminal -npm install express cors dotenv @prisma/client @prisma/adapter-pg -npm install -D prisma typescript tsx +npm install express cors dotenv @prisma/client @prisma/adapter-pg pg +npm install -D prisma typescript tsx @types/pg ``` +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: + Then, initialize your Prisma setup: ```terminal diff --git a/content/800-guides/330-github-actions.mdx b/content/800-guides/330-github-actions.mdx index 3eb898d7a6..b6550e79be 100644 --- a/content/800-guides/330-github-actions.mdx +++ b/content/800-guides/330-github-actions.mdx @@ -44,14 +44,15 @@ By the end of this section, your project will be fully prepared to use Prisma bo To get started with Prisma, install the required dependencies: ```terminal -npm install @prisma/extension-accelerate @prisma/client +npm install prisma tsx @types/pg dotenv --save-dev +npm install @prisma/client @prisma/adapter-pg pg ``` -Install the development dependencies: +:::info -```terminal -npm install prisma tsx dotenv --save-dev -``` +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma: @@ -139,13 +140,17 @@ This pushes your schema and prepares the client. Create a file at `src/seed.ts`: ```tsx file=src/seed.ts -import { withAccelerate } from "@prisma/extension-accelerate"; import { PrismaClient } from "../src/generated/prisma/client"; +import { PrismaPg } from "@prisma/adapter-pg"; import "dotenv/config"; +const adapter = new PrismaPg({ + connectionString: process.env.DATABASE_URL!, +}); + const prisma = new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()); + adapter, +}); const userData = [ { diff --git a/content/800-guides/340-ai-sdk-nextjs.mdx b/content/800-guides/340-ai-sdk-nextjs.mdx index 4d00104062..83eceb45ec 100644 --- a/content/800-guides/340-ai-sdk-nextjs.mdx +++ b/content/800-guides/340-ai-sdk-nextjs.mdx @@ -52,20 +52,16 @@ cd ai-sdk-prisma To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -164,27 +160,6 @@ touch lib/prisma.ts Set up the Prisma client like this: - - -```tsx file=lib/prisma.ts -import { PrismaClient } from "../app/generated/prisma/client"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const globalForPrisma = global as unknown as { - prisma: PrismaClient; -}; - -const prisma = globalForPrisma.prisma || new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()); - -if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; - -export default prisma; -``` - - - ```tsx file=lib/prisma.ts import { PrismaClient } from "../app/generated/prisma/client"; import { PrismaPg } from "@prisma/adapter-pg"; @@ -205,8 +180,6 @@ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma; export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/350-authjs-nextjs.mdx b/content/800-guides/350-authjs-nextjs.mdx index 3ccf3160e7..2aef53911e 100644 --- a/content/800-guides/350-authjs-nextjs.mdx +++ b/content/800-guides/350-authjs-nextjs.mdx @@ -53,20 +53,16 @@ cd authjs-prisma To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -204,29 +200,6 @@ npx prisma migrate dev --name init Create a new folder in the root called `lib` and create a new file called `prisma.ts` in it. This file will contain the Prisma Client: - - -```typescript file=lib/prisma.ts showLineNumbers -//add-start -import { PrismaClient } from '../app/generated/prisma' -import { withAccelerate } from '@prisma/extension-accelerate' - -const globalForPrisma = global as unknown as { - prisma: PrismaClient -} - -const prisma = globalForPrisma.prisma || new PrismaClient({ - accelerateUrl: process.env.DATABASE_URL, -}).$extends(withAccelerate()) - -if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma - -export default prisma -//add-end -``` - - - ```typescript file=lib/prisma.ts showLineNumbers //add-start import { PrismaClient } from '../app/generated/prisma' @@ -249,8 +222,6 @@ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma export default prisma //add-end ``` - - ## 3. Set up Auth.js credentials diff --git a/content/800-guides/360-embed-studio-nextjs.mdx b/content/800-guides/360-embed-studio-nextjs.mdx index dc50f894fb..6d80f698c6 100644 --- a/content/800-guides/360-embed-studio-nextjs.mdx +++ b/content/800-guides/360-embed-studio-nextjs.mdx @@ -79,10 +79,16 @@ cd nextjs-studio-embed Install the required Prisma packages: ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client @prisma/adapter-pg dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/extension-accelerate @prisma/client @prisma/adapter-pg dotenv pg ``` +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: + ### 2.2. Initialize Prisma with Prisma Postgres Initialize Prisma in your project and create a Prisma Postgres database: diff --git a/content/800-guides/370-bun.mdx b/content/800-guides/370-bun.mdx index 00fdfa1ad3..dec69406be 100644 --- a/content/800-guides/370-bun.mdx +++ b/content/800-guides/370-bun.mdx @@ -42,10 +42,16 @@ This creates a basic Bun project that includes a `package.json` file and an `ind Install the required Prisma packages and other dependencies: ```terminal -bun add -d prisma -bun add @prisma/client @prisma/adapter-pg +bun add -d prisma @types/pg +bun add @prisma/client @prisma/adapter-pg pg ``` +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: + ### 2.2. Initialize Prisma ORM with Prisma Postgres Initialize Prisma ORM with Prisma Postgres in your project: diff --git a/content/800-guides/390-hono.mdx b/content/800-guides/390-hono.mdx index f87d00968c..1da58e0760 100644 --- a/content/800-guides/390-hono.mdx +++ b/content/800-guides/390-hono.mdx @@ -38,20 +38,16 @@ npm create hono@latest To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma --save-dev -npm install @prisma/client @prisma/adapter-pg dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -234,36 +230,6 @@ npx prisma studio Inside of `/src`, create a `lib` directory and a `prisma.ts` file inside it. This file will be used to create and export your Prisma Client instance. Set up the Prisma client like this: - - - -```tsx file=src/lib/prisma.ts -import type { Context, Next } from 'hono'; -import { PrismaClient } from '../generated/prisma/client.js'; -import { withAccelerate } from '@prisma/extension-accelerate'; -import "dotenv/config"; - -function withPrisma(c: Context, next: Next) { - if (!c.get('prisma')) { - const databaseUrl = process.env.DATABASE_URL; - - if (!databaseUrl) { - throw new Error('DATABASE_URL is not set'); - } - const prisma = new PrismaClient({ accelerateUrl: databaseUrl }) - .$extends(withAccelerate()); - - c.set('prisma', prisma); - } - return next(); -} -export default withPrisma; -``` - - - - - ```tsx file=src/lib/prisma.ts import type { Context, Next } from 'hono'; import { PrismaClient } from '../generated/prisma/client.js'; @@ -290,8 +256,6 @@ function withPrisma(c: Context, next: Next) { export default withPrisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/400-betterauth-astro.mdx b/content/800-guides/400-betterauth-astro.mdx index 15951798da..b41bd5f8b2 100644 --- a/content/800-guides/400-betterauth-astro.mdx +++ b/content/800-guides/400-betterauth-astro.mdx @@ -48,22 +48,18 @@ Next, you'll add Prisma to your project to manage your database. ### 2.1. Install Prisma and dependencies -Install the necessary Prisma packages. The dependencies differ slightly depending on whether you use Prisma Postgres with Accelerate or another database. +Install the necessary Prisma packages: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client dotenv +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client dotenv -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -124,31 +120,20 @@ touch src/lib/prisma.ts Set up the Prisma client like this: - - ```ts file=src/lib/prisma.ts import { PrismaClient } from "../../prisma/generated/client"; -import { withAccelerate } from "@prisma/extension-accelerate"; +import { PrismaPg } from "@prisma/adapter-pg"; -const prisma = new PrismaClient({ - datasourceUrl: import.meta.env.DATABASE_URL, -}).$extends(withAccelerate()); - -export default prisma; -``` - - -```ts file=src/lib/prisma.ts -import { PrismaClient } from "../../prisma/generated/client"; +const adapter = new PrismaPg({ + connectionString: import.meta.env.DATABASE_URL, +}); const prisma = new PrismaClient({ - datasourceUrl: import.meta.env.DATABASE_URL, + adapter, }); export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently. diff --git a/content/800-guides/400-deno-integration.mdx b/content/800-guides/400-deno-integration.mdx index f6c7c8cefe..0cbde59991 100644 --- a/content/800-guides/400-deno-integration.mdx +++ b/content/800-guides/400-deno-integration.mdx @@ -104,10 +104,10 @@ Update the `dev` task in `deno.json`: ### 4.2 Initialize Prisma and create schema -Install the Prisma Client: +Install the Prisma Client, PostgreSQL adapter, and development dependencies: ```terminal -deno install npm:@prisma/client +deno install npm:@prisma/client npm:@prisma/adapter-pg npm:pg npm:prisma npm:@types/pg ``` Initialize Prisma in your project, which creates the necessary configuration files and folder structure for defining your database models. @@ -164,14 +164,15 @@ Now that the database is configured, update your application to interact with it ```tsx file=main.ts import { PrismaClient } from "./generated/prisma/client.ts"; +import { PrismaPg } from "npm:@prisma/adapter-pg"; import process from "node:process"; +const adapter = new PrismaPg({ + connectionString: process.env.DATABASE_URL, +}); + const prisma = new PrismaClient({ - datasources: { - db: { - url: process.env.DATABASE_URL, - }, - }, + adapter, }); async function handler(request: Request) { diff --git a/content/800-guides/999-making-guides.mdx b/content/800-guides/999-making-guides.mdx index 49ee775e9f..61c5ad7f83 100644 --- a/content/800-guides/999-making-guides.mdx +++ b/content/800-guides/999-making-guides.mdx @@ -265,20 +265,16 @@ In this guide, you'll learn to integrate Prisma ORM with a Prisma Postgres datab To get started with Prisma, you'll need to install a few dependencies: - - ```terminal -npm install prisma tsx --save-dev -npm install @prisma/extension-accelerate @prisma/client +npm install prisma tsx @types/pg --save-dev +npm install @prisma/client @prisma/adapter-pg dotenv pg ``` - - -```terminal -npm install prisma tsx --save-dev -npm install @prisma/client -``` - - + +:::info + +If you are using a different database provider (MySQL, SQL Server, SQLite), install the corresponding driver adapter package instead of `@prisma/adapter-pg`. For more information, see [Database drivers](/orm/overview/databases/database-drivers). + +::: Once installed, initialize Prisma in your project: @@ -491,28 +487,20 @@ Create a `/lib` directory and a `prisma.ts` file inside it. This file will be us Set up the Prisma client like this: - - ```tsx file=src/lib/prisma.ts import { PrismaClient } from "../generated/prisma"; -import { withAccelerate } from "@prisma/extension-accelerate"; - -const prisma = new PrismaClient().$extends(withAccelerate()); - -export default prisma; -``` - +import { PrismaPg } from "@prisma/adapter-pg"; - -```tsx file=src/lib/prisma.ts -import { PrismaClient } from "../generated/prisma"; +const adapter = new PrismaPg({ + connectionString: process.env.DATABASE_URL!, +}); -const prisma = new PrismaClient(); +const prisma = new PrismaClient({ + adapter, +}); export default prisma; ``` - - :::warning We recommend using a connection pooler (like [Prisma Accelerate](https://www.prisma.io/accelerate)) to manage database connections efficiently.