56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
# Fehlerbehandlung - Projektarbeit MYP Backend
|
|
|
|
## Datenbankschema-Probleme
|
|
|
|
### Problem: Schema-Problem beim User-Load - "tuple index out of range"
|
|
|
|
**Datum:** 2025-05-31
|
|
**Fehlerlog:**
|
|
```
|
|
2025-05-31 23:08:12 - [APP] app - [WARN] WARNING - Schema-Problem beim User-Load für ID 1: tuple index out of range
|
|
```
|
|
|
|
**Beschreibung des Problems:**
|
|
Der Flask-Login User-Loader versuchte auf Tupel-Indizes zuzugreifen, die nicht existierten. Dies geschah, wenn das ORM-Query fehlschlug und die Fallback-Logik mit manueller SQL-Abfrage verwendet wurde.
|
|
|
|
**Grundursache:**
|
|
1. Der ursprüngliche User-Loader hatte unzureichende Tupel-Längen-Prüfungen
|
|
2. Die manuelle SQL-Abfrage selektierte nur 6 Spalten, aber der Code versuchte auf mehr zuzugreifen
|
|
3. Die Fallback-Logik war nicht robust genug für verschiedene Fehlerfälle
|
|
|
|
**Lösung:**
|
|
Der User-Loader wurde vollständig überarbeitet mit folgenden Verbesserungen:
|
|
|
|
1. **Erweiterte manuelle Abfrage:** Alle User-Spalten werden abgefragt
|
|
2. **Robuste Tupel-Behandlung:** Längen-Prüfungen für jeden Index
|
|
3. **Mehrstufiges Fallback-System:**
|
|
- Primär: ORM-Query
|
|
- Sekundär: Manuelle erweiterte SQL-Abfrage
|
|
- Tertiär: Notfall-User-Objekt bei existierendem User
|
|
|
|
**Implementierte Lösung:**
|
|
```python
|
|
@login_manager.user_loader
|
|
def load_user(user_id):
|
|
# Robuste Tupel-Behandlung mit len(result) > index Prüfungen
|
|
user.email = result[1] if len(result) > 1 and result[1] else f"user_{user_id_int}@system.local"
|
|
# ... weitere sichere Zugriffe
|
|
```
|
|
|
|
**Präventionsmaßnahmen:**
|
|
- Alle Tupel-Zugriffe mit Längen-Prüfungen
|
|
- Mehrstufiges Fallback-System implementiert
|
|
- Erweiterte Logging für bessere Diagnosefähigkeit
|
|
- Notfall-User-Erstellung bei korrupten Schema-Daten
|
|
|
|
**Betroffene Komponenten:**
|
|
- `app.py` (User-Loader Funktion)
|
|
- Flask-Login Session-Management
|
|
- Benutzerauthentifizierung
|
|
|
|
**Test-Status:** ✅ Behoben
|
|
**Cascade-Analyse:** Keine weiteren Komponenten betroffen
|
|
|
|
## Weitere Fehlerbehandlungen
|
|
|
|
*Weitere Einträge folgen bei Bedarf...* |