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

2.9 KiB
Raw Blame History

数据库迁移执行指南

准备工作

  1. 确认数据库连接信息

    • 数据库主机地址
    • 数据库名称
    • 用户名和密码
    • 端口号通常是5432
  2. 确保PostgreSQL客户端已安装

    # 检查psql是否已安装
    psql --version
    

执行迁移

方法1: 使用psql命令行工具

# 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: 分步执行(推荐用于生产环境)

-- 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. 检查数据完整性

-- 验证记录数量
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. 检查应用功能

  • 教师端:项目创建页面
  • 教师端:项目编辑页面
  • 教师端:项目详情页面
  • 学生端:作业详情页面

回滚方案

如果迁移后发现问题,可以使用备份进行回滚:

-- 回滚到迁移前状态
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结构。


重要提醒: 请在生产环境执行前,先在开发环境完整测试整个迁移流程!