新增 競賽建立、評審建立、團隊建立

This commit is contained in:
2025-09-15 13:32:30 +08:00
parent b85a9ce95e
commit 31ffaa1974
31 changed files with 5163 additions and 455 deletions

View File

@@ -0,0 +1,74 @@
# 資料庫遷移說明
## 問題描述
競賽管理系統在創建競賽時出現以下錯誤:
1. `competition_award_types` 表缺少 `order_index` 欄位
2. `competition_teams` 表缺少 `registered_at` 欄位
3. 外鍵約束失敗,存在孤立的關聯記錄
## 解決方案
### 方法一:使用智能檢查腳本(推薦)
```bash
mysql -u your_username -p your_database_name < add-missing-columns.sql
```
### 方法二:使用簡化腳本
```bash
mysql -u your_username -p your_database_name < add-missing-columns-simple.sql
```
## 腳本內容
### 1. 添加缺失欄位
-`competition_award_types` 表添加 `order_index` 欄位
-`competition_teams` 表添加 `registered_at` 欄位
### 2. 清理孤立記錄
- 刪除所有關聯表中不存在的 `competition_id` 記錄
### 3. 添加必要索引
- 為所有關聯表添加適當的索引以提升查詢性能
## 執行前注意事項
1. **備份資料庫**
```bash
mysqldump -u your_username -p your_database_name > backup_before_migration.sql
```
2. **確認資料庫名稱**
- 將 `your_database_name` 替換為實際的資料庫名稱
- 將 `your_username` 替換為實際的用戶名
3. **檢查權限**
- 確保用戶有 ALTER TABLE 和 DELETE 權限
## 執行後驗證
執行完成後,可以運行以下查詢來驗證:
```sql
-- 檢查欄位是否添加成功
DESCRIBE competition_award_types;
DESCRIBE competition_teams;
-- 檢查索引是否創建成功
SHOW INDEX FROM competition_award_types;
SHOW INDEX FROM competition_teams;
-- 檢查孤立記錄是否已清理
SELECT COUNT(*) as orphaned_judges FROM competition_judges
WHERE competition_id NOT IN (SELECT id FROM competitions);
```
## 如果遇到錯誤
如果執行過程中遇到 "column already exists" 或 "index already exists" 錯誤,這是正常的,表示該欄位或索引已經存在,可以忽略這些錯誤。
## 聯繫支援
如果遇到其他問題,請檢查:
1. MySQL 版本是否支援所使用的語法
2. 用戶權限是否足夠
3. 資料庫連接是否正常