跳到主要内容

prisma集成mysql

Prisma 是怎么“用上” MySQL 的?​

核心链路就三件事

  • 在 Prisma Schema 里声明 datasource 是 MySQL
  • 把连接信息放到环境变量(例如 .env 的 DATABASE_URL=)
  • 生成 Prisma Client,在代码里用 Client 去 CRUD

连接与配置​

  • 创建 prisma/ 目录及 schema.prisma
  • 在根目录创建 .env
  • 创建 prisma.config.ts(用于配置 Prisma CLI)

prisma.config.ts配置​

当你运行 prisma init 时,CLI 会自动生成这个文件prisma.config.ts

配置schema 路径、migrations 路径、datasource url

  • schema: "prisma/schema.prisma":告诉 CLI 你的 schema 在哪

  • migrations.path: "prisma/migrations":迁移文件存放位置

  • datasource.url: env("DATABASE_URL"):CLI 连接数据库用的 URL

初始化 Prisma 客户端​

  • 把数据库连接包装成一个可以复用、带连接参数的单例实例
  • 建立数据库连接
  • 配置适配器(adapter)
  • 导出 Prisma 实例 prisma
  • 让其他代码导入使用

根目录下,新建lib/prisma.ts

  • 在一个地方实例化一次、全局复用
ts
import "dotenv/config";
import { PrismaMariaDb } from "@prisma/adapter-mariadb";
import { PrismaClient } from "../generated/prisma/client";

const adapter = new PrismaMariaDb({
host: process.env.DATABASE_HOST,
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE_NAME,
connectionLimit: 5,
});
const prisma = new PrismaClient({ adapter });

export { prisma };

相关命令​

bash
# 创建项目结构 + 写好初始配置,指定 Prisma Client 将来生成的位置
npx prisma init --datasource-provider mysql --output ../generated/prisma
# 根据 schema 创建并应用迁移,把表结构真正落到数据库里
npx prisma migrate dev --name init
# 生成 Prisma Client
npx prisma generate

模拟数据​

  • npx tsx .\mock\user.ts
ts
import { prisma } from '../lib/prisma'

async function main() {
const user = await prisma.user.create({
data: {
name: 'qwk',
password: '123456',
},
})
console.log('Created user:', user)
// Fetch all users with their posts
const allUsers = await prisma.user.findMany()
console.log('All users:', JSON.stringify(allUsers, null, 2))
}

// 执行完脚本之后,断开数据库连接,释放资源
main()
.then(async () => {
await prisma.$disconnect()
})
.catch(async (e) => {
console.error(e)
await prisma.$disconnect()
process.exit(1)
})