Fix migration error
This commit is contained in:
140
investigate_team_structure.py
Normal file
140
investigate_team_structure.py
Normal 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()
|
||||
Reference in New Issue
Block a user