129 lines
2.4 KiB
Markdown
129 lines
2.4 KiB
Markdown
|
|
# Prisma Schema 修改后的操作指南
|
|||
|
|
|
|||
|
|
## 修改 schema.prisma 后需要执行的步骤
|
|||
|
|
|
|||
|
|
### 1. 生成 Prisma Client(必须)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd backend
|
|||
|
|
npx prisma generate
|
|||
|
|
# 或使用 npm script
|
|||
|
|
npm run prisma:generate
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**作用**:根据最新的 schema 重新生成 Prisma Client,使 TypeScript 类型和代码与数据库结构同步。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2. 应用数据库迁移(必须)
|
|||
|
|
|
|||
|
|
根据环境选择不同的方式:
|
|||
|
|
|
|||
|
|
#### 开发环境(推荐)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd backend
|
|||
|
|
npx prisma migrate dev
|
|||
|
|
# 或使用 npm script
|
|||
|
|
npm run prisma:migrate
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 应用待执行的迁移到数据库
|
|||
|
|
- 如果有新的迁移,会自动创建并应用
|
|||
|
|
- 会重置开发数据库(如果使用 shadow database)
|
|||
|
|
|
|||
|
|
#### 生产环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd backend
|
|||
|
|
npx prisma migrate deploy
|
|||
|
|
# 或使用 npm script
|
|||
|
|
npm run prisma:migrate:deploy
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 仅应用待执行的迁移,不会创建新迁移
|
|||
|
|
- 不会重置数据库
|
|||
|
|
- 适合生产环境使用
|
|||
|
|
|
|||
|
|
#### 快速同步(仅开发环境,不推荐用于生产)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd backend
|
|||
|
|
npx prisma db push
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 直接将 schema 变更推送到数据库
|
|||
|
|
- 不创建迁移文件
|
|||
|
|
- 适合快速原型开发
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3. 重启应用(如果正在运行)
|
|||
|
|
|
|||
|
|
应用迁移后,需要重启 NestJS 应用以加载新的 Prisma Client:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 如果使用 npm run start:dev,会自动重启
|
|||
|
|
# 如果使用其他方式启动,需要手动重启
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 当前状态
|
|||
|
|
|
|||
|
|
✅ **已完成**:
|
|||
|
|
|
|||
|
|
- schema.prisma 已修改(content 字段改为 TEXT)
|
|||
|
|
- 迁移文件已创建:`20251118211424_change_log_content_to_text`
|
|||
|
|
|
|||
|
|
⏳ **待执行**:
|
|||
|
|
|
|||
|
|
1. 生成 Prisma Client
|
|||
|
|
2. 应用数据库迁移
|
|||
|
|
3. 重启应用(如果正在运行)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 执行顺序
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 生成 Prisma Client
|
|||
|
|
cd backend
|
|||
|
|
npx prisma generate
|
|||
|
|
|
|||
|
|
# 2. 应用迁移(开发环境)
|
|||
|
|
npx prisma migrate dev
|
|||
|
|
# 或生产环境
|
|||
|
|
npx prisma migrate deploy
|
|||
|
|
|
|||
|
|
# 3. 重启应用(如果需要)
|
|||
|
|
# 如果使用 start:dev,会自动重启
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 验证迁移是否成功
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查迁移状态
|
|||
|
|
npx prisma migrate status
|
|||
|
|
|
|||
|
|
# 查看数据库结构
|
|||
|
|
npx prisma studio
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **生产环境**:务必使用 `prisma migrate deploy`,不要使用 `prisma migrate dev`
|
|||
|
|
2. **备份数据**:在生产环境应用迁移前,建议先备份数据库
|
|||
|
|
3. **迁移冲突**:如果迁移失败,检查错误信息并解决后再继续
|
|||
|
|
4. **类型同步**:每次修改 schema 后都要运行 `prisma generate` 更新类型
|