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