Projektarbeit-MYP/COMMON_ERRORS.md

9.0 KiB

Common Errors und Lösungen

1. Database Schema Error - "no such column"

Problem

sqlite3.OperationalError: no such column: printers_1.last_checked
[SQL: SELECT jobs.id AS jobs_id, ... printers_1.last_checked ...]

Ursache

  • Datenbankschema ist veraltet
  • Die last_checked Spalte fehlt in der printers Tabelle
  • Tritt auf, wenn die Datenbank vor Schema-Updates erstellt wurde

Lösungen

  1. Automatische Migration (empfohlen):

    cd backend/app
    PYTHONPATH=. python3.11 utils/database_migration.py
    
  2. Manuelle Datenbank-Neuerstellung:

    cd backend/app
    python3.11 -c "from models import init_db; init_db(); print('Database recreated')"
    python3.11 utils/setup_drucker_db.py
    python3.11 -c "from models import create_initial_admin; create_initial_admin()"
    
  3. Spalte manuell hinzufügen:

    cd backend/app
    python3.11 -c "
    import sqlite3
    conn = sqlite3.connect('database/myp.db')
    cursor = conn.cursor()
    cursor.execute('ALTER TABLE printers ADD COLUMN last_checked DATETIME')
    conn.commit()
    conn.close()
    print('Column added')
    "
    

Prävention

  • Verwende die Migrationsskripte vor dem Start der Anwendung
  • Backup der Datenbank vor Schema-Änderungen erstellen

2. Tailwind CSS Compilation Fehler

Problem

npm ERR! could not determine executable to run

Ursache

  • Node.js/npm nicht installiert oder nicht im PATH
  • node_modules Verzeichnis fehlt
  • Defekte npm Installation

Lösungen

  1. Node.js installieren:

    # Ubuntu/Debian
    sudo apt update && sudo apt install nodejs npm
    
    # CentOS/RHEL
    sudo yum install nodejs npm
    
  2. Dependencies neu installieren:

    cd backend/app
    rm -rf node_modules package-lock.json
    npm install
    
  3. Manuelle CSS-Kompilierung:

    cd backend/app
    npx tailwindcss -i static/css/input.css -o static/css/tailwind.min.css --minify
    
  4. Fallback verwenden:

    • Die existierende static/css/tailwind.min.css wird automatisch verwendet
    • Keine weiteren Schritte erforderlich

3. Port 443/80 Permission Denied

Problem

Permission denied

beim Starten auf Port 443 oder 80

Ursache

  • Ports < 1024 sind privilegierte Ports
  • Benötigen Root-Rechte oder spezielle Capabilities

Lösungen

  1. Nicht-privilegierte Ports verwenden (empfohlen):

    python3 app.py --port 8443
    
  2. Automatische Fallback-Ports:

    • App erkennt automatisch Permission-Fehler
    • Verwendet Port 8443 statt 443
    • Verwendet Port 8080 statt 80
  3. Root-Rechte (nicht empfohlen):

    sudo python3 app.py
    
  4. Capabilities setzen (Linux):

    sudo setcap CAP_NET_BIND_SERVICE=+eip $(which python3)
    

4. Admin-Panel 404 Fehler

Problem

404 Not Found

für Admin-Routen wie /admin/users/add, /admin/printers/add

Ursache

  • Fehlende Template-Dateien
  • Nicht implementierte Admin-Routen
  • Fehlende API-Endpunkte

Lösungen

  1. Templates wurden erstellt:

    • admin_add_user.html - Benutzer hinzufügen
    • admin_add_printer.html - Drucker hinzufügen
    • admin_edit_user.html - Benutzer bearbeiten
    • admin_manage_printer.html - Drucker verwalten
    • admin_printer_settings.html - Drucker-Einstellungen
  2. API-Endpunkte implementiert:

    • /api/admin/system/status - System-Status
    • /api/admin/database/status - Datenbank-Status
    • /api/admin/users/{id}/edit - Benutzer bearbeiten
    • /api/admin/printers/{id}/edit - Drucker bearbeiten

5. Admin-Variable-Fehler

Problem

cannot access local variable 'os' where it is not associated with a value

Ursache

  • os Modul wird lokal importiert aber nicht verfügbar

Lösung

  • Import von os wurde an den Anfang der System-Informationen-Sektion verschoben
  • Fehler ist behoben

6. Icon-Pfad 404 Fehler

Problem

404 Not Found: /static/static/icons/icon-144x144.png

Ursache

  • Doppelte static/ im Pfad in der manifest.json

Lösung

  • Pfade in manifest.json korrigiert von static/icons/ zu icons/
  • Icons sind jetzt korrekt erreichbar

7. SSL-Zertifikat Probleme

Problem

  • SSL-Zertifikate fehlen
  • Zertifikat-Validierung schlägt fehl

Lösungen

  1. Automatische Zertifikat-Generierung:

    • App erstellt automatisch selbstsignierte Zertifikate
    • Für Entwicklung ausreichend
  2. SSL deaktivieren:

    python3 app.py --no-ssl
    
  3. Eigene Zertifikate verwenden:

    • Zertifikat: backend/app/certs/myp.crt
    • Schlüssel: backend/app/certs/myp.key

8. Datenbank-Probleme

Problem

  • Datenbank kann nicht initialisiert werden
  • SQLite-Fehler

Lösungen

  1. Datenbank-Verzeichnis erstellen:

    mkdir -p backend/app/database
    
  2. Berechtigungen prüfen:

    chmod 755 backend/app/database
    
  3. Datenbank neu initialisieren:

    cd backend/app
    python3 init_db.py
    

9. Scheduler-Fehler

Problem

Task mit ID check_jobs existiert bereits

Ursache

  • App wurde mehrmals gestartet
  • Scheduler-Thread läuft bereits

Lösung

# Alle Python-Prozesse stoppen
pkill -f "python.*app.py"

# Neu starten
python3 app.py

10. Import-Fehler

Problem

ModuleNotFoundError: No module named 'xyz'

Lösung

# Python Dependencies installieren
cd backend/app
pip3 install -r requirements.txt

# Oder für Python 3.11
python3.11 -m pip install -r requirements.txt

Startup-Script Verwendung

Automatische Problembehandlung

# Einfachste Methode
./backend/run.sh

# Oder direkt
cd backend
python3 start_server.py

Das Startup-Script:

  • Prüft automatisch Dependencies
  • Findet verfügbare Ports
  • Installiert fehlende Packages
  • Kompiliert CSS falls möglich
  • Startet Server mit optimalen Einstellungen

Manuelle Parameter

# Spezifischer Port
python3 start_server.py --port 5000

# SSL deaktivieren
python3 start_server.py --no-ssl

# Dual-Protokoll (HTTP + HTTPS)
python3 start_server.py --dual-protocol

Debugging-Tipps

  1. Log-Level erhöhen:

    # In config/settings.py
    LOG_LEVEL = "DEBUG"
    
  2. Detaillierte Logs anzeigen:

    tail -f backend/app/logs/app/app.log
    
  3. Netzwerk-Probleme prüfen:

    # Port-Status prüfen
    netstat -tlnp | grep :8443
    
    # Firewall prüfen
    sudo ufw status
    
  4. Python-Umgebung prüfen:

    python3 --version
    python3 -c "import flask; print(flask.__version__)"
    

Neue Features (behoben)

Admin-Panel Funktionalität

  • Benutzer hinzufügen/bearbeiten
  • Drucker hinzufügen/verwalten/konfigurieren
  • System-Status und Datenbank-Status APIs
  • Vollständige Admin-Templates

Verbesserte Fehlerbehandlung

  • Automatische Port-Fallbacks
  • Graceful CSS-Kompilierung mit Fallback
  • Robuste SSL-Zertifikat-Behandlung
  • Verbesserte Logging und Debugging

Flask Route Konflikte - 404 Fehler bei existierenden Routen

Problem:

  • API-Endpunkt /api/admin/stats/live gibt 404 Fehler zurück, obwohl die Route implementiert ist
  • Flask-Anwendung startet nicht mit AssertionError: "View function mapping is overwriting an existing endpoint function"

Ursache:

  • Doppelte Route-Definitionen in app.py (z.B. update_printers mehrfach definiert)
  • Konflikte zwischen Haupt-App-Routen und Blueprint-Routen
  • API-Blueprint wird ohne URL-Präfix registriert und überschreibt Haupt-Routen

Lösung:

  1. Doppelte Routen entfernen:

    grep -n "def update_printers" app.py  # Finde alle Duplikate
    sed -i '3512,$d' app.py  # Entferne doppelte Definition am Ende
    
  2. Blueprint-Registrierung deaktivieren:

    # app.register_blueprint(api_bp)  # Kommentiere aus bei Konflikten
    
  3. Route-Registrierung prüfen:

    python3.11 -c "from app import app; [print(f'{rule.rule} -> {rule.endpoint}') for rule in app.url_map.iter_rules() if 'admin' in rule.rule and 'stats' in rule.rule]"
    

Prävention:

  • Verwende eindeutige Funktionsnamen
  • Registriere Blueprints mit URL-Präfix: app.register_blueprint(api_bp, url_prefix='/api/v1')
  • Prüfe Route-Konflikte vor Deployment

Behoben am: 26.05.2025 Betroffen: Flask-Anwendung, Admin-Dashboard, Live-Statistiken

Status: GELÖST - API-Blueprint registriert mit URL-Präfix /api/v1, alle Admin-CRUD-Endpunkte funktionieren

Fix angewendet: 26.05.2025

  • API-Blueprint in app.py korrekt registriert mit app.register_blueprint(api_bp, url_prefix='/api/v1')
  • Alle Admin-Dashboard API-Endpunkte sind jetzt verfügbar:
    • /api/admin/stats/live
    • /api/admin/system/status
    • /api/admin/database/status
  • Alle Admin-Template-Routen funktionieren:
    • /admin/users/add
    • /admin/users/<id>/edit
    • /admin/printers/add
    • /admin/printers/<id>/manage

Prävention: Regelmäßige Überprüfung der Blueprint-Registrierung beim Hinzufügen neuer Routen