Files
akmon/doc_zhipao/DATABASE_MIGRATION_GUIDE.md
2026-01-20 08:04:15 +08:00

113 lines
2.9 KiB
Markdown
Raw Permalink 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. **确认数据库连接信息**
- 数据库主机地址
- 数据库名称
- 用户名和密码
- 端口号通常是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结构。
---
**重要提醒**: 请在生产环境执行前,先在开发环境完整测试整个迁移流程!