Initial commit of akmon project
This commit is contained in:
112
doc_zhipao/DATABASE_MIGRATION_GUIDE.md
Normal file
112
doc_zhipao/DATABASE_MIGRATION_GUIDE.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# 数据库迁移执行指南
|
||||
|
||||
## 准备工作
|
||||
|
||||
1. **确认数据库连接信息**
|
||||
- 数据库主机地址
|
||||
- 数据库名称
|
||||
- 用户名和密码
|
||||
- 端口号(通常是5432)
|
||||
|
||||
2. **确保PostgreSQL客户端已安装**
|
||||
```bash
|
||||
# 检查psql是否已安装
|
||||
psql --version
|
||||
```
|
||||
|
||||
## 执行迁移
|
||||
|
||||
### 方法1: 使用psql命令行工具
|
||||
|
||||
```bash
|
||||
# Windows PowerShell
|
||||
psql -h [主机地址] -U [用户名] -d [数据库名] -f migrate_scoring_criteria_to_json.sql
|
||||
|
||||
# 示例
|
||||
psql -h localhost -U postgres -d akmon_db -f migrate_scoring_criteria_to_json.sql
|
||||
```
|
||||
|
||||
### 方法2: 使用数据库管理工具
|
||||
|
||||
如果您使用 pgAdmin, DBeaver, 或其他数据库管理工具:
|
||||
|
||||
1. 连接到目标数据库
|
||||
2. 打开 `migrate_scoring_criteria_to_json.sql` 文件
|
||||
3. 执行整个脚本
|
||||
|
||||
### 方法3: 分步执行(推荐用于生产环境)
|
||||
|
||||
```sql
|
||||
-- 1. 先创建备份
|
||||
CREATE TABLE ak_training_projects_backup_20250611 AS
|
||||
SELECT * FROM ak_training_projects;
|
||||
|
||||
-- 2. 验证备份
|
||||
SELECT COUNT(*) FROM ak_training_projects_backup_20250611;
|
||||
|
||||
-- 3. 执行其余迁移脚本
|
||||
-- (复制migrate_scoring_criteria_to_json.sql的内容)
|
||||
```
|
||||
|
||||
## 迁移后验证
|
||||
|
||||
### 1. 检查数据完整性
|
||||
```sql
|
||||
-- 验证记录数量
|
||||
SELECT
|
||||
(SELECT COUNT(*) FROM ak_training_projects) as current_count,
|
||||
(SELECT COUNT(*) FROM ak_training_projects_backup_20250611) as backup_count;
|
||||
|
||||
-- 验证JSON结构
|
||||
SELECT
|
||||
id,
|
||||
title,
|
||||
scoring_criteria->'criteria' as criteria_array,
|
||||
jsonb_array_length(scoring_criteria->'criteria') as criteria_count
|
||||
FROM ak_training_projects
|
||||
WHERE scoring_criteria IS NOT NULL
|
||||
LIMIT 5;
|
||||
```
|
||||
|
||||
### 2. 检查应用功能
|
||||
- [ ] 教师端:项目创建页面
|
||||
- [ ] 教师端:项目编辑页面
|
||||
- [ ] 教师端:项目详情页面
|
||||
- [ ] 学生端:作业详情页面
|
||||
|
||||
## 回滚方案
|
||||
|
||||
如果迁移后发现问题,可以使用备份进行回滚:
|
||||
|
||||
```sql
|
||||
-- 回滚到迁移前状态
|
||||
DROP TABLE ak_training_projects;
|
||||
CREATE TABLE ak_training_projects AS
|
||||
SELECT * FROM ak_training_projects_backup_20250611;
|
||||
|
||||
-- 重建索引和约束(如果需要)
|
||||
-- 根据原始表结构添加必要的索引和约束
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **在非生产环境先测试**: 确保迁移脚本在开发环境正常执行
|
||||
2. **备份确认**: 迁移前确保备份表已正确创建
|
||||
3. **应用停机**: 生产环境迁移时建议短暂停机
|
||||
4. **监控**: 迁移后监控应用性能和错误日志
|
||||
5. **用户通知**: 如有新功能,及时通知用户
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q: 迁移脚本执行失败怎么办?
|
||||
A: 检查错误信息,通常是权限或数据类型问题。可以分步执行脚本进行排查。
|
||||
|
||||
### Q: 迁移后前端显示异常怎么办?
|
||||
A: 检查浏览器控制台错误,确认JSON数据格式是否正确。
|
||||
|
||||
### Q: 如何确认迁移成功?
|
||||
A: 检查数据库中scoring_criteria字段是否为JSONB格式,且包含正确的JSON结构。
|
||||
|
||||
---
|
||||
|
||||
**重要提醒**: 请在生产环境执行前,先在开发环境完整测试整个迁移流程!
|
||||
Reference in New Issue
Block a user