Set up

To get started:
1

Install the Prisma driver adapter for PlanetScale (@prisma/adapter-planetscale), PlanetScale serverless driver (@planetscale/database), and undici packages:
npm install @prisma/adapter-planetscale @planetscale/database undici
NoteWhen using an older version of Node.js, you can provide a custom fetch function implementation. We recommend the undici package on which Node’s built-in fetch is based. Node.js version 18 includes a built-in global fetch function.
2

Enable the driverAdapters Preview feature flag:
// schema.prisma
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["driverAdapters"]
}

datasource db {
  provider     = "mysql"
  url          = env("DATABASE_URL")
  relationMode = "prisma"
}
NoteEnsure you update the host value in your connection string to aws.connect.psdb.cloud. You can learn more about this here.
3

Generate Prisma Client:
npx prisma generate
4

Update your Prisma Client instance to use the PlanetScale serverless driver:
import { Client } from '@planetscale/database'
import { PrismaPlanetScale } from '@prisma/adapter-planetscale'
import { PrismaClient } from '@prisma/client'
import dotenv from 'dotenv'
import { fetch as undiciFetch } from 'undici'

dotenv.config()
const connectionString = `${process.env.DATABASE_URL}`

const client = new Client({ url: connectionString, fetch: undiciFetch })
const adapter = new PrismaPlanetScale(client)
const prisma = new PrismaClient({ adapter })

async function main() {
  const posts = await prisma.post.findMany()
  console.log(posts)
}
You can then use Prisma Client as you usually would with auto-completion and full type-safety.

Need help?

Get help from the PlanetScale Support team, or join our GitHub discussion board to see how others are using PlanetScale.