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 derprinters
Tabelle - Tritt auf, wenn die Datenbank vor Schema-Updates erstellt wurde
Lösungen
-
Automatische Migration (empfohlen):
cd backend/app PYTHONPATH=. python3.11 utils/database_migration.py
-
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()"
-
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
-
Node.js installieren:
# Ubuntu/Debian sudo apt update && sudo apt install nodejs npm # CentOS/RHEL sudo yum install nodejs npm
-
Dependencies neu installieren:
cd backend/app rm -rf node_modules package-lock.json npm install
-
Manuelle CSS-Kompilierung:
cd backend/app npx tailwindcss -i static/css/input.css -o static/css/tailwind.min.css --minify
-
Fallback verwenden:
- Die existierende
static/css/tailwind.min.css
wird automatisch verwendet - Keine weiteren Schritte erforderlich
- Die existierende
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
-
Nicht-privilegierte Ports verwenden (empfohlen):
python3 app.py --port 8443
-
Automatische Fallback-Ports:
- App erkennt automatisch Permission-Fehler
- Verwendet Port 8443 statt 443
- Verwendet Port 8080 statt 80
-
Root-Rechte (nicht empfohlen):
sudo python3 app.py
-
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
-
Templates wurden erstellt:
admin_add_user.html
- Benutzer hinzufügenadmin_add_printer.html
- Drucker hinzufügenadmin_edit_user.html
- Benutzer bearbeitenadmin_manage_printer.html
- Drucker verwaltenadmin_printer_settings.html
- Drucker-Einstellungen
-
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 dermanifest.json
Lösung
- Pfade in
manifest.json
korrigiert vonstatic/icons/
zuicons/
- Icons sind jetzt korrekt erreichbar
7. SSL-Zertifikat Probleme
Problem
- SSL-Zertifikate fehlen
- Zertifikat-Validierung schlägt fehl
Lösungen
-
Automatische Zertifikat-Generierung:
- App erstellt automatisch selbstsignierte Zertifikate
- Für Entwicklung ausreichend
-
SSL deaktivieren:
python3 app.py --no-ssl
-
Eigene Zertifikate verwenden:
- Zertifikat:
backend/app/certs/myp.crt
- Schlüssel:
backend/app/certs/myp.key
- Zertifikat:
8. Datenbank-Probleme
Problem
- Datenbank kann nicht initialisiert werden
- SQLite-Fehler
Lösungen
-
Datenbank-Verzeichnis erstellen:
mkdir -p backend/app/database
-
Berechtigungen prüfen:
chmod 755 backend/app/database
-
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
-
Log-Level erhöhen:
# In config/settings.py LOG_LEVEL = "DEBUG"
-
Detaillierte Logs anzeigen:
tail -f backend/app/logs/app/app.log
-
Netzwerk-Probleme prüfen:
# Port-Status prüfen netstat -tlnp | grep :8443 # Firewall prüfen sudo ufw status
-
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:
-
Doppelte Routen entfernen:
grep -n "def update_printers" app.py # Finde alle Duplikate sed -i '3512,$d' app.py # Entferne doppelte Definition am Ende
-
Blueprint-Registrierung deaktivieren:
# app.register_blueprint(api_bp) # Kommentiere aus bei Konflikten
-
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