library-picturebook-activity/backend/docs/DATABASE_SETUP.md
aid 418aa57ea8 Day4: 超管端设计优化 + UGC绘本创作社区P0实现
一、超管端设计优化
- 文档管理SOP体系建立,docs目录重组
- 统一用户管理:跨租户全局视角,合并用户管理+公众用户
- 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作)
- 菜单精简:移除评委管理/评审规则/通知管理
- Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一

二、UGC绘本创作社区P0
- 数据库:10张新表(user_works/user_work_pages/work_tags等)
- 子女账号独立化:Child升级为独立User,家长切换+独立登录
- 用户作品库:CRUD+发布审核,8个API
- AI创作流程:提交→生成→保存到作品库,4个API
- 作品广场:首页改造为推荐流,标签+搜索+排序
- 内容审核(超管端):作品审核+作品管理+标签管理
- 活动联动:WorkSelector作品选择器
- 布局改造:底部5Tab(发现/创作/活动/作品库/我的)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:20:25 +08:00

184 lines
3.7 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.

# 数据库配置指南
## 1. 创建数据库
首先需要在 MySQL 中创建数据库:
```sql
CREATE DATABASE db_competition_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
## 2. 配置环境变量
### 方式一:复制示例文件
```bash
cd backend
cp .env.example .env
```
### 方式二:手动创建 .env 文件
`backend` 目录下创建 `.env` 文件,内容如下:
```env
DATABASE_URL="mysql://root:password@localhost:3306/competition_management?schema=public"
JWT_SECRET="your-secret-key-change-in-production"
PORT=3001
NODE_ENV=development
```
## 3. 配置说明
### DATABASE_URL 格式
```
mysql://用户名:密码@主机:端口/数据库名?参数
```
**示例:**
- 本地 MySQL默认端口
```
DATABASE_URL="mysql://root:password@localhost:3306/competition_management?schema=public"
```
- 远程 MySQL
```
DATABASE_URL="mysql://user:password@192.168.1.100:3306/competition_management?schema=public"
```
- 使用 SSL
```
DATABASE_URL="mysql://user:password@localhost:3306/competition_management?schema=public&sslmode=require"
```
- 包含特殊字符的密码(需要 URL 编码):
```
DATABASE_URL="mysql://user:p%40ssw0rd@localhost:3306/competition_management?schema=public"
```
### JWT_SECRET
用于 JWT token 签名的密钥,生产环境必须使用强随机字符串。
**生成方式:**
```bash
# 使用 Node.js
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# 或使用 openssl
openssl rand -hex 32
```
## 4. 初始化数据库
配置好 `.env` 文件后,执行以下命令初始化数据库:
```bash
# 生成 Prisma Client
pnpm prisma:generate
# 运行数据库迁移(创建表结构)
pnpm prisma:migrate
# 或使用开发模式(会提示输入迁移名称)
pnpm prisma:migrate dev
```
## 5. 验证连接
### 方式一:使用 Prisma Studio
```bash
pnpm prisma:studio
```
这会打开一个可视化界面,可以在浏览器中查看和管理数据库。
### 方式二:测试连接
启动后端服务:
```bash
pnpm start:dev
```
如果连接成功,服务会正常启动;如果失败,会显示具体的错误信息。
## 6. 常见问题
### 问题 1: 连接被拒绝
**错误信息:** `Can't reach database server`
**解决方案:**
- 检查 MySQL 服务是否启动
- 检查主机和端口是否正确
- 检查防火墙设置
### 问题 2: 认证失败
**错误信息:** `Access denied for user`
**解决方案:**
- 检查用户名和密码是否正确
- 确认用户有访问该数据库的权限
- 如果密码包含特殊字符,需要进行 URL 编码
### 问题 3: 数据库不存在
**错误信息:** `Unknown database`
**解决方案:**
- 先创建数据库(见步骤 1
- 检查数据库名称是否正确
### 问题 4: 字符集问题
**解决方案:**
创建数据库时指定字符集:
```sql
CREATE DATABASE competition_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
## 7. 生产环境配置
生产环境建议:
1. **使用环境变量管理工具**(如 AWS Secrets Manager、Azure Key Vault
2. **使用连接池**Prisma 默认已配置)
3. **启用 SSL 连接**
4. **定期备份数据库**
5. **使用强密码和 JWT_SECRET**
## 8. 数据库迁移
### 创建新迁移
```bash
pnpm prisma:migrate dev --name migration_name
```
### 应用迁移(生产环境)
```bash
pnpm prisma:migrate deploy
```
### 重置数据库(开发环境)
```bash
pnpm prisma:migrate reset
```
**注意:** 这会删除所有数据,仅用于开发环境!