All skills
prisma avatar

/prisma-orm-setup

@b491588 official
by prismaprisma/skills68 stars
7

Set up Prisma ORM in an application, connect its database, or troubleshoot the connection of an existing Prisma 6, 7, or 8 app. Defaults new applications to Prisma ORM 8 and loads the package-owned prisma-8 skill; keeps existing Prisma 6/7 apps on their version with provider references for PostgreSQL, MySQL, SQLite, SQL Server, CockroachDB, MongoDB, and Prisma Postgres.

Use this Skill: https://skilld.dev/gh/prisma/skills/prisma-orm-setup

This session only. Nothing lands on disk.

referencesv7-mysql.md

≈896 tokens on demand. Your agent reads this file only when SKILL.md points to it.

MySQL Setup

Configure Prisma ORM 7 with MySQL and MariaDB. For an existing Prisma 6 app, keep its configuration and use the Prisma 6 docs; the configuration and adapter examples below are for 7.

Prerequisites

  • MySQL or MariaDB database
  • Connection string

1. Schema Configuration

In prisma/schema.prisma:

datasource db {
  provider = "mysql"
}

generator client {
  provider = "prisma-client"
  output   = "../generated"
}

2. Config Configuration

In prisma.config.ts:

import 'dotenv/config'
import { defineConfig, env } from 'prisma/config'

export default defineConfig({
  schema: 'prisma/schema.prisma',
  datasource: {
    url: env('DATABASE_URL'),
  },
})

3. Environment Variable

In .env:

DATABASE_URL="mysql://user:password@localhost:3306/mydb"

Connection String Format

mysql://USER:PASSWORD@HOST:PORT/DATABASE
  • USER: Database user
  • PASSWORD: Password
  • HOST: Hostname
  • PORT: Port (default 3306)
  • DATABASE: Database name

Driver Adapter

Use a driver adapter for the standard SQL workflow.

  1. Install adapter and driver:

    npm install @prisma/adapter-mariadb@7 mariadb
  2. Set MYSQL_USER, MYSQL_PASSWORD, and MYSQL_DATABASE in the application environment to match the CLI URL, and use the same host and port. Instantiate Prisma Client with the adapter:

    import 'dotenv/config'
    import { PrismaClient } from '../generated/client'
    import { PrismaMariaDb } from '@prisma/adapter-mariadb'
    
    const adapter = new PrismaMariaDb({
      host: 'localhost',
      port: 3306,
      connectionLimit: 5,
      user: process.env.MYSQL_USER,
      password: process.env.MYSQL_PASSWORD,
      database: process.env.MYSQL_DATABASE,
    })
    
    const prisma = new PrismaClient({ adapter })

Text protocol option

If you need the MariaDB driver's text protocol instead of the default binary execute() path, enable useTextProtocol explicitly:

import { PrismaClient } from '../generated/client'
import { PrismaMariaDb } from '@prisma/adapter-mariadb'

const adapter = new PrismaMariaDb(process.env.DATABASE_URL!, {
  useTextProtocol: true,
})

const prisma = new PrismaClient({ adapter })

Use this only when you specifically need text-protocol compatibility for your MariaDB setup.

PlanetScale Setup

Check whether foreign key constraints are enabled on the PlanetScale database. When they are disabled, use relationMode = "prisma" and add indexes for relation fields. Do not override an existing database that has foreign keys enabled.

In prisma/schema.prisma:

datasource db {
  provider     = "mysql"
  relationMode = "prisma" // Emulate foreign keys in Prisma
}

Common Issues

"Too many connections"

Set connectionLimit on PrismaMariaDb, as in the example above. The Prisma 6 connection_limit URL parameter does not configure the Prisma 7 adapter pool.

JSON Support

MySQL 5.7+ supports JSON. MariaDB 10.2+ supports JSON (as an alias for LONGTEXT with check constraints). Prisma handles this, but verify your version.

References

Source: SKILL.md on GitHub

No alerts2d3 checks · Risk SAFE
  • Gen Agent Trust Hub2d

    This skill provides instructions for setting up Prisma ORM version 6, 7, and 8. It utilizes official Prisma CLI tools and packages from the vendor. Security analysis indicates the skill follows safe practices for handling credentials via environment variables and includes standard placeholder values for documentation. It also features a mechanism to synchronize and load updated guidance directly from the Prisma package.

  • Socket2d

    No alerts

  • Snyk2d

    Risk: LOW · No issues

Signed by skilld at b491588. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 hours ago.

Activeupdated 3 days ago
metadata
{
  "author": "prisma",
  "version": "1.0.0"
}

README badge

README badge for prisma/skills/prisma-orm-setup