tidbx-prisma

Prisma ORM setup and usage for TiDB from Node.js/TypeScript. Covers configuring prisma/schema.prisma (MySQL provider), DATABASE_URL formatting for TiDB Cloud TLS (sslaccept=strict and optional sslcert), migrations (prisma migrate), Prisma Client generation, CRUD patterns, and safe raw SQL ($queryRaw) plus runnable templates.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "tidbx-prisma" with this command: npx skills add pingcap/agent-rules/pingcap-agent-rules-tidbx-prisma

TiDB Prisma Integration

Comprehensive Prisma ORM setup for TiDB with guided workflows.

When to use this skill

  • Set up Prisma in a new Node.js/TypeScript project
  • Add Prisma to an existing project
  • Define/modify models and run migrations
  • Configure TiDB Cloud TLS correctly via DATABASE_URL
  • Troubleshoot Prisma connection or migration issues

Prisma vs drivers

Prisma is an ORM (models + migrations + typed client). If you only need a low-level MySQL driver, use:

  • tidbx-javascript-mysql2 (promise-native)
  • tidbx-javascript-mysqljs (callback-based)

Available guides

  • guides/quickstart.md -- new project: install -> init -> migrate -> run TS quickstart
  • guides/troubleshooting.md -- common TLS/connection/client-generation issues

I'll pick the smallest guide that matches your request, then use templates/scripts as needed.

Quick examples

  • "Add Prisma to my existing Node API and connect to TiDB Cloud" -> follow quickstart, then integrate client
  • "My TiDB Cloud public endpoint fails with TLS errors" -> fix DATABASE_URL TLS params
  • "Create tables from my Prisma models" -> run prisma migrate dev

Reference: datasource config

In prisma/schema.prisma, use the MySQL connector and read DATABASE_URL:

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

TLS notes for TiDB Cloud public endpoints

For TiDB Cloud public endpoints, configure TLS via query params in DATABASE_URL:

  • Serverless/Starter/Essential (public endpoint): append ?sslaccept=strict
  • Dedicated (public endpoint with downloaded CA): append ?sslaccept=strict&sslcert=/absolute/path/to/ca.pem

Examples:

DATABASE_URL='mysql://USER:PASSWORD@HOST:4000/DATABASE?sslaccept=strict'
DATABASE_URL='mysql://USER:PASSWORD@HOST:4000/DATABASE?sslaccept=strict&sslcert=/absolute/path/to/ca.pem'

Install (TypeScript)

npm i @prisma/client
npm i -D prisma typescript ts-node @types/node

Core patterns

Create client and disconnect (always)

import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()
try {
  // ... queries ...
} finally {
  await prisma.$disconnect()
}

Safe raw SQL (parameterized)

  • Prefer Prisma query builder when possible.
  • When you need raw SQL, prefer $queryRaw with template literals (parameterized).
  • Avoid $queryRawUnsafe unless you fully control the SQL.
const rows = await prisma.$queryRaw`SELECT VERSION() AS version`

Templates & scripts

  • templates/schema.prisma -- example schema (Player/Profile) mapped to TiDB tables
  • templates/quickstart.ts -- minimal Prisma app: connect -> version -> CRUD (run with ts-node)
  • scripts/validate_connection.ts -- connects and prints SELECT VERSION() (run with ts-node)

Related skills

  • tidbx-nextjs -- Next.js App Router integration patterns (route handlers, runtimes, deployment)
  • tidbx-kysely -- typed query builder alternative to Prisma
  • tidbx-javascript-mysql2 -- low-level driver (promise API)
  • tidbx-javascript-mysqljs -- low-level driver (callback API)

Workflow

I will:

  1. Confirm your runtime (Node) and project language (TypeScript)
  2. Confirm your TiDB deployment (TiDB Cloud vs self-managed) and endpoint type
  3. Choose a guide (guides/quickstart.md or guides/troubleshooting.md)
  4. Generate the minimal Prisma files/commands to get you unblocked

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

tidb-sql

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

pytidb

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

tidbx-serverless-driver

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

tidbx

No summary provided by upstream source.

Repository SourceNeeds Review