MySQL Setup. Reference when using this Prisma feature.
npx skills add https://github.com/prisma/cursor-plugin --skill prisma-database-setup-mysql
Configure Prisma with MySQL (or MariaDB).
In prisma/schema.prisma:
datasource db {
provider = "mysql"
}
generator client {
provider = "prisma-client"
output = "../generated"
}
In prisma.config.ts:
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
datasource: {
url: env('DATABASE_URL'),
},
})
In .env:
DATABASE_URL="mysql://user:password@localhost:3306/mydb"
mysql://USER:PASSWORD@HOST:PORT/DATABASE
Prisma ORM 7 uses the query compiler by default, so you must use a driver adapter.
npm install @prisma/adapter-mariadb mariadb
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 })
PlanetScale uses MySQL but requires specific settings because it doesn't support foreign key constraints.
In prisma/schema.prisma:
datasource db {
provider = "mysql"
relationMode = "prisma" // Emulate foreign keys in Prisma
}
MySQL has a connection limit. Adjust connection pool size in URL:
DATABASE_URL="mysql://...?connection_limit=5"
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.
Take prisma/prisma-database-setup-mysql from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npm.
Without those the skill loads but fails at the first command.