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
- 在一个地方实例化一次、全局复用
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 };
相关命令
# 创建项目结构 + 写好初始配置,指定 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
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)
})