Some checks failed
continuous-integration/drone/push Build is failing
- 后端: 新增 user_levels, exp_history, badge_definitions, user_badges, level_configs 表 - 后端: 新增 LevelService 和 BadgeService 服务 - 后端: 新增等级/奖章/签到/排行榜 API 端点 - 后端: 考试/练习/陪练完成时触发经验值和奖章检查 - 前端: 新增 LevelBadge, ExpProgress, BadgeCard, LevelUpDialog 组件 - 前端: 新增排行榜页面 - 前端: 成长路径页面集成真实等级数据 - 数据库: 包含迁移脚本和初始数据
83 lines
2.2 KiB
Markdown
83 lines
2.2 KiB
Markdown
# 数据库迁移说明
|
||
|
||
本目录包含 KPL 考培练系统的数据库迁移脚本。
|
||
|
||
## 迁移脚本列表
|
||
|
||
| 脚本 | 说明 | 创建时间 |
|
||
|------|------|----------|
|
||
| `add_level_badge_system.sql` | 等级与奖章系统 | 2026-01-29 |
|
||
|
||
## 执行迁移
|
||
|
||
### 测试环境(Docker)
|
||
|
||
KPL 测试环境数据库在服务器 Docker 容器中运行:
|
||
|
||
```bash
|
||
# 1. SSH 登录 KPL 服务器
|
||
ssh root@<KPL服务器IP>
|
||
|
||
# 2. 进入项目目录
|
||
cd /www/wwwroot/kpl.ireborn.com.cn
|
||
|
||
# 3. 执行迁移(方法一:直接执行)
|
||
docker exec -i kpl-mysql-dev mysql -uroot -pnj861021 kpl_dev < backend/migrations/add_level_badge_system.sql
|
||
|
||
# 或者(方法二:交互式执行)
|
||
docker exec -it kpl-mysql-dev mysql -uroot -pnj861021 kpl_dev
|
||
# 然后复制粘贴 SQL 脚本内容执行
|
||
|
||
# 方法三:从本地执行(需要先上传SQL文件到服务器)
|
||
# scp backend/migrations/add_level_badge_system.sql root@<服务器IP>:/tmp/
|
||
# ssh root@<服务器IP> "docker exec -i kpl-mysql-dev mysql -uroot -pnj861021 kpl_dev < /tmp/add_level_badge_system.sql"
|
||
```
|
||
|
||
**注意**:MySQL 容器密码为 `nj861021`(之前通过 `docker exec kpl-mysql-dev env | grep MYSQL` 确认)
|
||
|
||
### 生产环境
|
||
|
||
生产环境迁移前请确保:
|
||
1. 已备份数据库
|
||
2. 在低峰期执行
|
||
3. 测试环境验证通过
|
||
|
||
```bash
|
||
# 执行迁移(替换为实际的生产数据库配置)
|
||
mysql -h<host> -u<user> -p<password> <database> < backend/migrations/add_level_badge_system.sql
|
||
```
|
||
|
||
## 回滚方法
|
||
|
||
如需回滚,执行以下 SQL:
|
||
|
||
```sql
|
||
DROP TABLE IF EXISTS user_badges;
|
||
DROP TABLE IF EXISTS badge_definitions;
|
||
DROP TABLE IF EXISTS exp_history;
|
||
DROP TABLE IF EXISTS level_configs;
|
||
DROP TABLE IF EXISTS user_levels;
|
||
```
|
||
|
||
## 验证迁移
|
||
|
||
执行以下查询验证表是否创建成功:
|
||
|
||
```sql
|
||
SHOW TABLES LIKE '%level%';
|
||
SHOW TABLES LIKE '%badge%';
|
||
SHOW TABLES LIKE '%exp%';
|
||
|
||
-- 查看表结构
|
||
DESCRIBE user_levels;
|
||
DESCRIBE exp_history;
|
||
DESCRIBE badge_definitions;
|
||
DESCRIBE user_badges;
|
||
DESCRIBE level_configs;
|
||
|
||
-- 验证初始数据
|
||
SELECT COUNT(*) FROM level_configs; -- 应该是 10 条
|
||
SELECT COUNT(*) FROM badge_definitions; -- 应该是 20 条
|
||
SELECT COUNT(*) FROM user_levels; -- 应该等于用户数
|
||
```
|