Fix migration error

This commit is contained in:
2025-08-29 09:11:20 +09:00
parent a180c1e258
commit b91b522fa3
26 changed files with 5848 additions and 22 deletions

View File

@ -0,0 +1,140 @@
#!/usr/bin/env python3
import os
import sys
import django
# プロジェクト設定
sys.path.append('/app')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()
from django.db import connection
import logging
# ログ設定
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def investigate_team_table_structure():
"""チームテーブルの構造とFC岐阜問題を調査"""
print("=== Team テーブル構造とFC岐阜問題調査 ===")
with connection.cursor() as cursor:
# 1. rog_teamテーブルの構造確認
print("\n1. rog_teamテーブル構造:")
cursor.execute("""
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'rog_team'
ORDER BY ordinal_position;
""")
columns = cursor.fetchall()
for col in columns:
print(f" - {col[0]}: {col[1]} ({'NULL' if col[2] == 'YES' else 'NOT NULL'})")
# 2. rog_teamテーブルの総件数
print("\n2. rog_teamテーブルの状況:")
cursor.execute("SELECT COUNT(*) FROM rog_team;")
total_teams = cursor.fetchone()[0]
print(f" 総チーム数: {total_teams}")
# 3. FC岐阜イベントID:10の詳細調査
print("\n3. FC岐阜イベントID:10詳細調査:")
cursor.execute("SELECT COUNT(*) FROM rog_entry WHERE event_id = 10;")
fc_entries = cursor.fetchone()[0]
print(f" FC岐阜イベントエントリー数: {fc_entries}")
# 4. FC岐阜エントリーのサンプル表示
print("\n4. FC岐阜エントリーサンプル:")
cursor.execute("""
SELECT id, team_id, event_id, date
FROM rog_entry
WHERE event_id = 10
LIMIT 10;
""")
fc_entry_samples = cursor.fetchall()
for entry in fc_entry_samples:
print(f" Entry ID:{entry[0]}, Team ID:{entry[1]}, Event ID:{entry[2]}, Date:{entry[3]}")
# 5. FC岐阜エントリーのteam_idを調べる
print("\n5. FC岐阜エントリーのteam_id分析:")
cursor.execute("""
SELECT team_id, COUNT(*) as count
FROM rog_entry
WHERE event_id = 10
GROUP BY team_id
ORDER BY count DESC;
""")
team_id_stats = cursor.fetchall()
for stat in team_id_stats:
print(f" Team ID:{stat[0]}, エントリー数:{stat[1]}")
# 6. 実際のteam_idでチーム情報を確認
print("\n6. 実際のチーム情報確認:")
if team_id_stats:
sample_team_ids = [stat[0] for stat in team_id_stats[:5]]
for team_id in sample_team_ids:
cursor.execute("SELECT * FROM rog_team WHERE id = %s;", [team_id])
team_info = cursor.fetchone()
if team_info:
print(f" Team ID:{team_id} 存在する: {team_info}")
else:
print(f" Team ID:{team_id} 存在しない")
# 7. ゼッケン番号付きチームの確認(実際のカラム名を使用)
print("\n7. ゼッケン番号関連調査:")
if 'zekken_number' in [col[0] for col in columns]:
cursor.execute("""
SELECT COUNT(*)
FROM rog_team
WHERE zekken_number IS NOT NULL AND zekken_number != '';
""")
zekken_count = cursor.fetchone()[0]
print(f" ゼッケン番号付きチーム数: {zekken_count}")
if zekken_count > 0:
cursor.execute("""
SELECT id, zekken_number, event_id
FROM rog_team
WHERE zekken_number IS NOT NULL AND zekken_number != ''
LIMIT 10;
""")
zekken_teams = cursor.fetchall()
print(" ゼッケン番号付きチームサンプル:")
for team in zekken_teams:
print(f" Team ID:{team[0]}, Zekken:{team[1]}, Event ID:{team[2]}")
# 8. 通過審査管理画面の問題の原因を特定
print("\n8. 通過審査管理画面問題の分析:")
print(" FC岐阜イベントID:10について:")
print(f" - エントリー数: {fc_entries}")
print(f" - 関連チーム情報の確認が必要")
# 実際に存在するチームを探す
if team_id_stats:
existing_teams = []
missing_teams = []
for team_id, count in team_id_stats:
cursor.execute("SELECT COUNT(*) FROM rog_team WHERE id = %s;", [team_id])
exists = cursor.fetchone()[0] > 0
if exists:
existing_teams.append((team_id, count))
else:
missing_teams.append((team_id, count))
print(f" - 存在するチーム: {len(existing_teams)}")
print(f" - 存在しないチーム: {len(missing_teams)}")
if missing_teams:
print(" 🔴 問題発見: エントリーが参照するチームが存在しない!")
for team_id, count in missing_teams[:3]:
print(f" Missing Team ID:{team_id} ({count}エントリー)")
if __name__ == "__main__":
try:
investigate_team_table_structure()
except Exception as e:
print(f"❌ エラーが発生しました: {e}")
import traceback
traceback.print_exc()