96 lines
2.6 KiB
Markdown
96 lines
2.6 KiB
Markdown
# 資料庫遷移指南 - 添加 is_timeout 欄位
|
|
|
|
## 概述
|
|
本次遷移為現有的測試結果表添加 `is_timeout` 欄位,用於標記測試是否因為時間到而強制提交。
|
|
|
|
## 受影響的表
|
|
1. `test_results` - 邏輯測試和創意測試結果表
|
|
2. `combined_test_results` - 綜合測試結果表
|
|
|
|
## 遷移內容
|
|
為每個表添加以下欄位:
|
|
```sql
|
|
is_timeout BOOLEAN DEFAULT FALSE
|
|
```
|
|
|
|
## 執行方法
|
|
|
|
### 方法一:直接執行 SQL 腳本(推薦)
|
|
1. 打開 MySQL 客戶端(如 phpMyAdmin、MySQL Workbench 或命令行)
|
|
2. 連接到 `hr_assessment` 資料庫
|
|
3. 執行以下 SQL 命令:
|
|
|
|
```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 腳本
|
|
1. 確保已安裝 mysql2 依賴:
|
|
```bash
|
|
npm install mysql2
|
|
```
|
|
|
|
2. 執行遷移腳本:
|
|
```bash
|
|
node scripts/add-timeout-columns.js
|
|
```
|
|
|
|
### 方法三:應用程式自動遷移
|
|
當應用程式重新啟動時,會自動執行遷移(如果欄位不存在)。
|
|
|
|
## 驗證遷移
|
|
執行以下查詢來驗證欄位是否成功添加:
|
|
|
|
```sql
|
|
-- 檢查 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`
|
|
|
|
## 回滾方法
|
|
如果需要移除這些欄位(不建議):
|
|
|
|
```sql
|
|
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;
|
|
```
|
|
|
|
## 注意事項
|
|
1. 此遷移是向後兼容的,不會影響現有功能
|
|
2. 所有現有記錄的 `is_timeout` 值將設為 `FALSE`
|
|
3. 新的測試結果將根據實際情況設置 `is_timeout` 值
|
|
4. 建議在生產環境執行前先在測試環境驗證
|
|
|
|
## 完成後的功能
|
|
- 綜合測試時間從 45 分鐘改為 30 分鐘
|
|
- 剩餘 5 分鐘時會彈出提醒
|
|
- 時間到後自動提交並標記為時間到
|
|
- 管理員可以在結果頁面看到時間到標記
|