library-picturebook-activity/backend/docs/SCHEMA_CHANGE_GUIDE.md
2025-11-23 14:04:20 +08:00

129 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` 更新类型