UrNetwork-Stats-Dashboard-r.../IMMEDIATE_FIX.md

130 lines
3.1 KiB
Markdown
Raw Normal View History

2025-11-21 22:39:41 +01:00
# 🚑 OKAMŽITÁ OPRAVA - Database Path Error
## Problém
```
sqlite3.OperationalError: unable to open database file
```
## ⚡ Rychlé Řešení (30 sekund)
### Varianta 1: Automatická oprava
```bash
cd ~/urio
python3 fix_db_path.py
python3 main.py
```
### Varianta 2: Manuální oprava
```bash
cd ~/urio
# Přidej do main.py hned za class Config:
# Najdi tuto řádku (řádek ~33):
# SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", "sqlite:///instance/transfer_stats.db")
#
# A nahraď ji tímto (3 řádky):
# BASE_DIR = os.path.abspath(os.path.dirname(__file__))
# INSTANCE_DIR = os.path.join(BASE_DIR, 'instance')
# SQLALCHEMY_DATABASE_URI = os.getenv("DATABASE_URL", f"sqlite:///{os.path.join(INSTANCE_DIR, 'transfer_stats.db')}")
```
### Varianta 3: Použij opravený soubor
```bash
cd ~/urio
# Stáhni znovu main_enhanced.py z outputs/
# A přepiš jím současný main.py
mv main.py main.py.broken
cp /path/to/main_enhanced.py main.py
python3 main.py
```
## 🔍 Co je problém?
SQLAlchemy používá relativní cestu `sqlite:///instance/transfer_stats.db`, ale instance folder neexistuje v době, kdy se SQLAlchemy inicializuje.
## ✅ Co oprava dělá?
1. **Použije absolutní cestu** místo relativní
2. **Vytvoří instance/ folder** PŘED inicializací SQLAlchemy
3. **Nastaví správnou cestu** k databázi
## 📝 Změny v kódu
### PŘED (nefungující):
```python
class Config:
SQLALCHEMY_DATABASE_URI = "sqlite:///instance/transfer_stats.db"
app = Flask(__name__)
app.config.from_object(Config)
# instance folder se vytváří tady ← TOO LATE!
```
### PO (fungující):
```python
class Config:
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
INSTANCE_DIR = os.path.join(BASE_DIR, 'instance')
SQLALCHEMY_DATABASE_URI = f"sqlite:///{os.path.join(INSTANCE_DIR, 'transfer_stats.db')}"
# instance folder se vytváří tady ← BEFORE app init!
if not os.path.exists(Config.INSTANCE_DIR):
os.makedirs(Config.INSTANCE_DIR)
app = Flask(__name__)
app.config.from_object(Config)
```
## 🎯 Ověření
Po opravě by měl výstup vypadat takto:
```bash
$ python3 main.py
2025-11-21 12:20:51,319 - INFO - Successfully loaded world map GeoJSON data.
2025-11-21 12:20:51,450 - INFO - Scheduler started
* Serving Flask app 'main'
* Running on http://0.0.0.0:90
```
✅ Bez chyby "unable to open database file"!
## 🆘 Stále nefunguje?
Zkontroluj:
```bash
# 1. Existuje instance složka?
ls -la instance/
# 2. Jsou v ní správné soubory?
ls -la instance/transfer_stats.db*
# 3. Má Python práva na zápis?
touch instance/test.txt && rm instance/test.txt
# 4. Je databáze validní?
sqlite3 instance/transfer_stats.db ".tables"
```
Pokud všechno OK, měl by výstup být:
```
accounts settings stats webhook
```
---
## 📦 Aktualizované soubory
Všechny soubory v `/mnt/user-data/outputs/` jsou již opravené:
-**main_enhanced.py** - Opravená verze
-**fix_db_path.py** - Automatický fix skript
-**migrate.py** - Funguje s instance/
Stačí je použít a vše bude fungovat!
---
**Vyřešilo to problém? Dej mi vědět!** 🚀