本技能用于在使用 Prisma 时配置 MySQL(或 MariaDB)数据库,属于 Prisma 该功能的参考文档。
用途
帮助开发者将 Prisma 项目连接到 MySQL 或 MariaDB,并完成必要的配置步骤。
前置条件
- MySQL 或 MariaDB 数据库
- 连接字符串
主要配置步骤
1. Schema 配置
在 prisma/schema.prisma 中设置数据源与生成器。数据源 provider 设为 "mysql",生成器 client 设置 provider = "prisma-client"、output = "../generated"。
2. Config 配置(v7)
在 prisma.config.ts 中通过 defineConfig 进行配置,指定 schema 路径为 'prisma/schema.prisma',datasource.url 通过 env('DATABASE_URL') 读取环境变量。
3. 环境变量
在 .env 中设置 DATABASE_URL,例如:"mysql://user:password@localhost:3306/mydb"。
连接字符串格式
mysql://USER:PASSWORD@HOST:PORT/DATABASE
- USER:数据库用户
- PASSWORD:密码
- HOST:主机名
- PORT:端口(默认 3306)
- DATABASE:数据库名
驱动适配器(需 Prisma ORM 7)
Prisma ORM 7 默认使用查询编译器,因此必须使用驱动适配器。
安装适配器与驱动: npm install @prisma/adapter-mariadb mariadb
使用适配器实例化 Prisma Client 时,需引入 dotenv/config、从生成的 client 引入 PrismaClient、引入 PrismaMariaDb,并以连接参数(host、port、connectionLimit、user、password、database)创建适配器实例,再以 new PrismaClient({ adapter }) 创建客户端。
PlanetScale 配置
PlanetScale 使用 MySQL,但由于不支持外键约束,需要特定设置:在 prisma/schema.prisma 的数据源中设置 relationMode = "prisma",以在 Prisma 中模拟外键。
常见问题
- “Too many connections”:MySQL 存在连接数限制,可在 URL 中调整连接池大小,例如 DATABASE_URL="mysql://...?connection_limit=5"。
- JSON 支持:MySQL 5.7+ 支持 JSON;MariaDB 10.2+ 支持 JSON(作为 LONGTEXT 加检查约束的别名)。Prisma 会处理该情况,但需确认版本。