# 数据库迁移执行指南 ## 准备工作 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结构。 --- **重要提醒**: 请在生产环境执行前,先在开发环境完整测试整个迁移流程!