UrNetwork-Stats-Dashboard-r.../IMMEDIATE_FIX.md
2025-11-21 22:39:41 +01:00

3.1 KiB

🚑 OKAMŽITÁ OPRAVA - Database Path Error

Problém

sqlite3.OperationalError: unable to open database file

Rychlé Řešení (30 sekund)

Varianta 1: Automatická oprava

cd ~/urio
python3 fix_db_path.py
python3 main.py

Varianta 2: Manuální oprava

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

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í):

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í):

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:

$ 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:

# 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! 🚀