2.6 KiB
2.6 KiB
資料庫遷移指南 - 添加 is_timeout 欄位
概述
本次遷移為現有的測試結果表添加 is_timeout
欄位,用於標記測試是否因為時間到而強制提交。
受影響的表
test_results
- 邏輯測試和創意測試結果表combined_test_results
- 綜合測試結果表
遷移內容
為每個表添加以下欄位:
is_timeout BOOLEAN DEFAULT FALSE
執行方法
方法一:直接執行 SQL 腳本(推薦)
- 打開 MySQL 客戶端(如 phpMyAdmin、MySQL Workbench 或命令行)
- 連接到
hr_assessment
資料庫 - 執行以下 SQL 命令:
USE hr_assessment;
-- 添加 test_results 表的 is_timeout 欄位
ALTER TABLE test_results
ADD COLUMN is_timeout BOOLEAN DEFAULT FALSE;
-- 添加 combined_test_results 表的 is_timeout 欄位
ALTER TABLE combined_test_results
ADD COLUMN is_timeout BOOLEAN DEFAULT FALSE;
方法二:使用 Node.js 腳本
-
確保已安裝 mysql2 依賴:
npm install mysql2
-
執行遷移腳本:
node scripts/add-timeout-columns.js
方法三:應用程式自動遷移
當應用程式重新啟動時,會自動執行遷移(如果欄位不存在)。
驗證遷移
執行以下查詢來驗證欄位是否成功添加:
-- 檢查 test_results 表結構
DESCRIBE test_results;
-- 檢查 combined_test_results 表結構
DESCRIBE combined_test_results;
-- 確認欄位存在
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'hr_assessment'
AND TABLE_NAME IN ('test_results', 'combined_test_results')
AND COLUMN_NAME = 'is_timeout';
預期結果
test_results
表應該包含is_timeout
欄位combined_test_results
表應該包含is_timeout
欄位- 所有現有記錄的
is_timeout
值應該為FALSE
回滾方法
如果需要移除這些欄位(不建議):
USE hr_assessment;
-- 移除 test_results 表的 is_timeout 欄位
ALTER TABLE test_results DROP COLUMN is_timeout;
-- 移除 combined_test_results 表的 is_timeout 欄位
ALTER TABLE combined_test_results DROP COLUMN is_timeout;
注意事項
- 此遷移是向後兼容的,不會影響現有功能
- 所有現有記錄的
is_timeout
值將設為FALSE
- 新的測試結果將根據實際情況設置
is_timeout
值 - 建議在生產環境執行前先在測試環境驗證
完成後的功能
- 綜合測試時間從 45 分鐘改為 30 分鐘
- 剩餘 5 分鐘時會彈出提醒
- 時間到後自動提交並標記為時間到
- 管理員可以在結果頁面看到時間到標記